首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检测保留但未按下

如何检测保留但未按下
EN

Stack Overflow用户
提问于 2020-12-25 18:29:20
回答 2查看 36关注 0票数 0

我有一个按钮和一些动画。当我点击按钮(我按住它)时,我想要看到按下的动画。当我停止按下按钮时,它又变成了一个红色的盒子。当我按住它的当前状态时,它没有变化。

代码语言:javascript
复制
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  Color color = Colors.red;
  double w = 100.0;
  double h = 100.0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: GestureDetector(
          child: Container(
            width: w,
            height: h,
            color: color,
          ),
          onTap: () {
            setState(() {
              color = Colors.blue;
              h = 75.0;
              w = 125.0;
            });
            Future.delayed(Duration(milliseconds: 500), () {
              setState(() {
                color = Colors.red;
                h = 100.0;
                w = 100.0;
                print("pressed");
              });
            });
          },
        ),
      ),
    );
  }
}
EN

回答 2

Stack Overflow用户

发布于 2020-12-25 18:42:39

您可以使用AnimatedContainer,然后使用Duration属性为其提供动画效果。之后,您可以用onLongPress替换onTap,神奇的事情就发生了:)

下面是我编辑的代码:

代码语言:javascript
复制
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  Color color = Colors.red;
  double w = 100.0;
  double h = 100.0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: GestureDetector(
          child: AnimatedContainer(
            duration: Duration(milliseconds: 300),
            width: w,
            height: h,
            color: color,
          ),
          onLongPress: () {
            setState(() {
              color = Colors.blue;
              h = 75.0;
              w = 125.0;
            });
            Future.delayed(Duration(milliseconds: 500), () {
              setState(() {
                color = Colors.red;
                h = 100.0;
                w = 100.0;
                print("pressed");
              });
            });
          },
        ),
      ),
    );
  }
}
票数 0
EN

Stack Overflow用户

发布于 2020-12-25 21:13:18

尝试用InkWellInkResponse包装你的Container。然后您可以设置hoverColorhighlightColor等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65447257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档