Android setStat()不';不要更新屏幕
我是颤振新手,我有一个问题,那就是setStat()方法应该放在哪里。 这是一个简单的代码,我做的训练,这是一个秒表。在调试中,一切都进行得很顺利,但是屏幕没有更新,它只显示初始状态“00:00:00” 代码如下: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
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不用担心,当你在学习时,这是完全好的,我希望你在软件开发中一切顺利)如果它解决了你的问题,你可以“接受”我的答案