android - setStat() 不更新屏幕

标签 android flutter setstate

我是 flutter 新手,我有一个问题,即 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(),
            )
          ]),
        ),
      ),
    );
  }
}

最佳答案

1) “setStat”错误,尝试使用“setState”。 2)你缺少额外的“()”,没有它们,你声明一个新方法(又名函数)你需要的是将你的函数作为参数传递给setState 让我们回顾一下

1) 调用函数“setState()”;

2)将你的函数作为参数传递

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

setState(foo);

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

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

您还可以将 if 语句移至 setState 之外

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

关于android - setStat() 不更新屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61658094/

相关文章:

Flutter - 如何导航到异步值上的另一个页面

javascript - 如何在axios响应后在React中使setState同步

reactjs - 如何在reactjs中更新 map 函数中的状态

dart - 以异步方式使用 .map()、.where() 等迭代助手?

flutter - 将 Ref 作为参数传递给服务是一个好习惯吗?

android-studio - Android Studio中有添加Flutter pub包的快捷方式吗?

android - 有没有办法在同一工作区内制作项目的副本?

android - Android 消息中的表情符号

Android - SQL语法错误

java - YUV图像处理