zoukankan      html  css  js  c++  java
  • Flutter-变量初始化问题

    没事写代码写到标注释这一句报错:

    class TestPage extends StatefulWidget {
      @override
      TestPageState createState() {
        return TestPageState();
      }
    }
    
    class TestPageState extends State<TestPage> {
    
      Completer completer = Completer();
    
      int num = 1;
    
      Timer timer = Timer.periodic(Duration(seconds: 1), callback );    ///这一句报错
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Container(
            alignment: Alignment.center,
            color: Colors.white,
            child: FlatButton(child: Text('点我打开弹窗'),
            onPressed: onTap,
            ),
          ),
        );
      }
    
       void callback(Timer t) {
        setState(() {
          num++;
        });
      }
    
    
      void onTap (){
    
        showDialog(context: context,
        builder: (context) => DialogPage(callback: (){completer.complete(true);}),
        );
      }
    
    }

    报错信息:

     意思是初始化变量的时候只能用static方法。

    但callback里面有setState,不能用static方法。

    解决方法是在initstate函数里进行初始化:

    class TestPage extends StatefulWidget {
      @override
      TestPageState createState() {
        return TestPageState();
      }
    }
    
    class TestPageState extends State<TestPage> {
    
      Completer completer = Completer();
    
      int num = 1;
    
      Timer timer;
    
      @override
      void initState() {
        super.initState();
        timer = Timer.periodic(Duration(seconds: 1), callback );
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Container(
            alignment: Alignment.center,
            color: Colors.white,
            child: FlatButton(child: Text('点我打开弹窗'),
            onPressed: onTap,
            ),
          ),
        );
      }
    
       void callback(Timer t) {
        setState(() {
          num++;
        });
      }
  • 相关阅读:
    vue cli 3.0安装、项目创建
    Vue-详解设置路由导航的两种方法
    VUE项目启动流程
    vue项目创建
    前端UI优秀框架
    Spring MVC返回JSON的几种方法
    Cookie 和 Session 的区别
    Object.defineProperty()
    vuex getter传入参数
    后台管理系统权限控制的思路
  • 原文地址:https://www.cnblogs.com/FdWzy/p/13619688.html
Copyright © 2011-2022 走看看