如何将数据粘贴到小部件 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() 或类似的东西。
我正在使用 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() 或类似的东西。