Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android setStat()不';不要更新屏幕_Android_Flutter_Setstate - Fatal编程技术网

Android setStat()不';不要更新屏幕

Android setStat()不';不要更新屏幕,android,flutter,setstate,Android,Flutter,Setstate,我是颤振新手,我有一个问题,那就是setStat()方法应该放在哪里。 这是一个简单的代码,我做的训练,这是一个秒表。在调试中,一切都进行得很顺利,但是屏幕没有更新,它只显示初始状态“00:00:00” 代码如下: import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatefulWidget { @override _MyAppState cr

我是颤振新手,我有一个问题,那就是setStat()方法应该放在哪里。 这是一个简单的代码,我做的训练,这是一个秒表。在调试中,一切都进行得很顺利,但是屏幕没有更新,它只显示初始状态“00:00:00”

代码如下:

import 'package:flutter/material.dart';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

var time = new Stopwatch();

class _MyAppState extends State<MyApp> {
  int counter = 0;
  bool stat = false;
  String timeFormate = "00:00:00";

  setStat() {
    if (stat) {
      timeFormate = time.elapsed.toString();
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Timer app pro',
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: Text("Training fucken app"),
        ),
        body: Container(
          child: Column(children: [
            Text(timeFormate),
            RaisedButton(
              child: Text("Start"),
              onPressed: () {
                time.start();
                stat = true;
                print(time.isRunning);
                print(time.elapsed.toString());
              },
            ),
            RaisedButton(
              child: Text("Stop"),
              onPressed: () {
                time.stop();
                print(time.isRunning);
                print(time.elapsed.toString());
              },
            ),
            RaisedButton(
              child: Text("Reset"),
              onPressed: () => time.reset(),
            )
          ]),
        ),
      ),
    );
  }
}

导入“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>\u MyAppState();
}
var time=新秒表();
类MyAppState扩展了状态{
int计数器=0;
布尔统计=假;
字符串timeFormate=“00:00:00”;
setStat(){
如果(统计){
timeFormate=time.appeased.toString();
}
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“计时器应用程序专业版”,
debugShowCheckedModeBanner:false,
家:脚手架(
appBar:appBar(
标题:文本(“训练应用程序”),
),
主体:容器(
子项:列(子项:[
文本(时间格式),
升起的按钮(
子项:文本(“开始”),
已按下:(){
time.start();
stat=true;
打印(运行时间);
打印(time.appeased.toString());
},
),
升起的按钮(
子:文本(“停止”),
已按下:(){
时间。停止();
打印(运行时间);
打印(time.appeased.toString());
},
),
升起的按钮(
子项:文本(“重置”),
按下时:()=>time.reset(),
)
]),
),
),
);
}
}
1)“setStat”错误,请尝试使用“setState”。 2) 如果不声明一个新方法(又称函数),您将缺少额外的“()”,您需要的是将函数作为参数传递到setState中 让我们回顾一下

1) 调用函数“
setState()

2) 将函数作为参数传递

void foo (){
  if (stat) {
     timeFormate = time.elapsed.toString();
  }
}

setState(foo);
3) 在“setState(foo);”中使用“short”语法替换foo成为“foo”函数的主体

setState(() {
  if (stat) {
   timeFormate = time.elapsed.toString();
  }
});
也可以将if语句移到setState之外

  if (stat) {
   setState(() {
     timeFormate = time.elapsed.toString();
   });
  }

你是说setState(){}你没有在你的小部件的任何地方调用setState。是的,它不会更新屏幕
setStat(){if(stat){timeFormate=time.appeased.toString();}}
它应该是setState(){if(stat){timeFormate=time.appeased.toString();}}谢谢你的澄清,这是一个新手犯的错误know@AbdelrahmanKhalil不用担心,当你在学习时,这是完全好的,我希望你在软件开发中一切顺利)如果它解决了你的问题,你可以“接受”我的答案