Flutter实战小案例

(实战)点不到的按钮

// 主要实现效果类
class _MyHomePageState extends State<MyHomePage> {
  // 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变量的值  
  
  void initState() {
    randomPosition();
    super.initState();
  }
  // 5.随机变化left和top的值
  randomPosition() {
    setState(() {
      btnLeft = rng.nextDouble() * (s.width - 100);
      btnTop = rng.nextDouble() * (s.height - 40);
    });
  }
 // 6.widgets渲染
  
  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;

  
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  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));
  
  void initState() {
    randomPosition();
    super.initState();
  }

  randomPosition() {
    setState(() {
      btnLeft = Random().nextDouble() * (s.width - 100);
      btnTop = Random().nextDouble() * (s.height - 40);
    });
  }

  
  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,
                  ),
                ),
              )),
        ],
      ),
    );
  }
}

相关推荐

  1. Flutter实战案例

    2024-07-17 23:12:04       22 阅读
  2. Flutter详解及案例代码

    2024-07-17 23:12:04       56 阅读
  3. Flutter 计1

    2024-07-17 23:12:04       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 23:12:04       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 23:12:04       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 23:12:04       62 阅读
  4. Python语言-面向对象

    2024-07-17 23:12:04       72 阅读

热门阅读

  1. 【读书笔记】训练自己的数据集yolov8

    2024-07-17 23:12:04       22 阅读
  2. C#自定义异常(Exception)的实现

    2024-07-17 23:12:04       24 阅读
  3. JDK 方法中的小坑

    2024-07-17 23:12:04       20 阅读
  4. LVS集群简介

    2024-07-17 23:12:04       22 阅读
  5. 类和对象-多态-纯虚函数和抽象类

    2024-07-17 23:12:04       21 阅读
  6. 建筑产业网元宇宙的探索与实践

    2024-07-17 23:12:04       21 阅读
  7. 微信小程序加载动画文件

    2024-07-17 23:12:04       29 阅读
  8. 刷题记录:LeetCode 925.长按键入

    2024-07-17 23:12:04       24 阅读
  9. 实际项目中JVM调优

    2024-07-17 23:12:04       20 阅读