react-native - 我可以在 flutter 中获得与 React Native 中的 <TouchableOpacity/> 相同的效果吗?

标签 react-native flutter

我发现在React Native中,使用组件时,按下相应的区域可以有不透明的效果。 在 flutter 中,我们当然可以使用 InkWell 小部件,但我不想要矩形或正方形。我们可以使用 flutter 实现相同的结果吗?干杯!

最佳答案

使用下面的代码:

import 'package:flutter/material.dart';

class TouchableOpacity extends StatefulWidget {
  final Widget child;
  final Function onTap;
  final Duration duration = const Duration(milliseconds: 50);
  final double opacity = 0.5;

  TouchableOpacity({@required this.child, this.onTap});

  @override
  _TouchableOpacityState createState() => _TouchableOpacityState();
}

class _TouchableOpacityState extends State<TouchableOpacity> {
  bool isDown;

  @override
  void initState() {
    super.initState();
    setState(() => isDown = false);
  }

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTapDown: (_) => setState(() => isDown = true),
      onTapUp: (_) => setState(() => isDown = false),
      onTapCancel: () => setState(() => isDown = false),
      onTap: widget.onTap,
      child: AnimatedOpacity(
        child: widget.child,
        duration: widget.duration,
        opacity: isDown ? widget.opacity : 1,
      ),
    );
  }
}

用法:

TouchableOpacity(
  child: ....
  onTap: () {....}
)

关于react-native - 我可以在 flutter 中获得与 React Native 中的 <TouchableOpacity/> 相同的效果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54473908/

相关文章:

javascript - 如何将 ScrollView 与嵌套的 FlatList 一起使用?

react-native - 针对 Android 平台的 React 原生广告服务集成

javascript - 当应用程序处于后台时尝试使用 AsyncStorage 写入获取的数据库数据时出现 iOS 错误

javascript - 如何在 React Native 中动态添加或删除文本输入

dart - flutter_search_bar 插件 onClose 监听器

android - 无法解析 URL "https://pub.dartlang.org"。错误 (69) : Unable to 'pub upgrade' flutter tool. 五秒后重试...(还剩 9 次尝试)

react-native - React Native 中的 Expo-Image-Picker

flutter - pub get 失败(66;无法在 "pubspec.yaml"中找到名为 "C:\Windows\System32"的文件

intellij-idea - Intellij Flutter - 通过 Alt+Enter 导入不工作

flutter - Flutter 中的 "Image"和 "ImageProvider"有什么区别?