Flutter实战小案例

2024-07-19 1011阅读

(实战)点不到的按钮

// 主要实现效果类
class _MyHomePageState extends State {
  // 1.定义要使用的变量
  double btnLeft = 0;
  double btnTop = 0;
  int timeDuration = 500;
  String textButton = "点我呀";
  // 2.获得当前设备屏幕尺⼨,需要import 'dart:ui'
  var s = window.physicalSize / window.devicePixelRatio;
  // 3.新建⼀个随机对象,import 'dart:math';
  var rng = new Random()
  // 4.初始化init变量的值  
  @override
  void initState() {
    randomPosition();
    super.initState();
  }
  // 5.随机变化left和top的值
  randomPosition() {
    setState(() {
      btnLeft = rng.nextDouble() * (s.width - 100);
      btnTop = rng.nextDouble() * (s.height - 40);
    });
  }
 // 6.widgets渲染
  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        AnimatedPositioned(
            duration: Duration(milliseconds: timeDuration),
            left: btnLeft,
            top: btnTop,
            width: 100,
            height: 40,
            child: ElevatedButton(
              onPressed: randomPosition,
              child: Text(textButton),
            ))
      ],
    );
  }
}

(实战)点不到的按钮修改

  • 修改按钮的宽200和⾼80
  • 设置背景⾊ rgb 值为 136, 138, 226
  • 按钮文本颜⾊设置为黑⾊
  • 文本设置为:初次见面
    class MyHomePage extends StatefulWidget {
      const MyHomePage({Key? key, required this.title}) : super(key: key);
      final String title;
      @override
      State createState() => _MyHomePageState();
    }
    class _MyHomePageState extends State {
      double btnLeft = 0;
      double btnTop = 0;
      int timeDuration = 500;
      String textButton = "初次见面";
      var s = window.physicalSize / window.devicePixelRatio;
      var rng = Random();
      // 创建背景颜色对象
      var backColor = const BoxDecoration(color: Color.fromRGBO(136, 138, 226, 1));
      @override
      void initState() {
        randomPosition();
        super.initState();
      }
      randomPosition() {
        setState(() {
          btnLeft = Random().nextDouble() * (s.width - 100);
          btnTop = Random().nextDouble() * (s.height - 40);
        });
      }
      @override
      Widget build(BuildContext context) {
        return Container(
          decoration: backColor,
          child: Stack(
            children: [
              Positioned(
                  left: btnLeft,
                  top: btnTop,
                  width: 200,
                  height: 80,
                  child: ElevatedButton(
                    onPressed: randomPosition,
                    child: Text(
                      textButton,
                      // 修改文本颜色
                      style: const TextStyle(
                        color: Colors.black,
                      ),
                    ),
                  )),
            ],
          ),
        );
      }
    }
    
    Flutter实战小案例
    (图片来源网络,侵删)
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]