如何将数据粘贴到小部件 Flutter 上

How to stick data on widget Flutter

我正在使用 FutureBuilder 从共享首选项加载我的数据...这是我的代码

Future getData() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String dataIn = prefs.getString("clockin");
    return dataIn;
  }

Widget defaultClock() {
    return FutureBuilder(
      future: getData(),
      builder: (context, snap) {
        if (snap.hasData) {
          return Text(snap.data);
        } else {
          return CircularProgressIndicator();
        }
      },
    );
  }

使用该代码...数据将始终首先检查...数据是否存在...如果不存在,它将首先 return CircularProgressIndicator() 并且当 ConnectionState.done 和 snap.hasData==true 它将 return 数据...所以...而不是使用 Future Builder,是否有另一种方法可以使数据始终保留在我的小部件中,而无需像 CircularProgressIndicator() 这样的任何过程我打开我的应用程序

很遗憾,这是不可能的。这是因为您使用的是 Future 生成器。数据将在未来某个时间到达——可能是 30 毫秒或 3 秒。

备选方案是 - 您在前一个屏幕中获取数据,然后调用此屏幕以及数据。示例:

screen1.dart 将屏幕 2 调用为:

 string _data = await getData();
 _loadNextScreen(_data);



void _loadNextScreen(string data) {

    Navigator.push(
       context,
      MaterialPageRoute(
         builder: (context) =>
            MyNextScreen(data: _data)
     ),
  );

}

现在,在 screen2 中,您不需要 CircularProcessIndicator() 或类似的东西。