如何在小部件Flutter上粘贴数据

问题描述 投票:0回答:1

我正在使用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();
        }
      },
    );
  }

使用该代码......数据总是首先检查......数据是否存在......如果不存在,它将首先返回CircularProgressIndicator(),当ConnectionState.done和snap.hasData==true时,它将返回数据......所以......与其使用Future Builder,是否有其他方法,当我打开我的应用程序时,数据将总是粘在我的widget中,而不需要像CircularProgressIndicator()这样的任何过程。

flutter widget sharedpreferences
1个回答
1
投票

不幸的是,这是不可能的。这是因为你使用的是一个 未来 构建者。数据将在未来的某个时间到达--是30毫秒还是3秒。

另一种方法是--在前一个屏幕中获取数据,然后连同数据一起调用这个屏幕。例如:

screen1.dart将screen2调用为 。

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



void _loadNextScreen(string data) {

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

}

现在,在screen2中,你不需要有CircularProcessIndicator()或类似的功能。

© www.soinside.com 2019 - 2024. All rights reserved.