Flutter 如何在widget flift上粘贴数据
我正在使用FutureBuilder从共享首选项加载数据。。。这是我的密码Flutter 如何在widget flift上粘贴数据,flutter,widget,sharedpreferences,Flutter,Widget,Sharedpreferences,我正在使用FutureBuilder从共享首选项加载数据。。。这是我的密码 Future getData() async { SharedPreferences prefs = await SharedPreferences.getInstance(); String dataIn = prefs.getString("clockin"); return dataIn; } Widget defaultClock() { return FutureBuild
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之外,还有其他方法可以使数据始终粘贴在我的小部件中,而无需在我打开应用程序时执行任何类似于CircularProgressIndicator()的过程。不幸的是,这是不可能的。这是因为您使用的是未来构建器。数据将在未来某个时间到达-30毫秒或3秒 另一种选择是——在上一个屏幕中获取数据,并与数据一起调用此屏幕。例如: screen1.dart将screen2称为:
string _data = await getData();
_loadNextScreen(_data);
void _loadNextScreen(string data) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
MyNextScreen(data: _data)
),
);
}
现在,在屏幕2中,您不需要使用CircularProcessIndicator()或类似工具。在调用共享首选项时,是否有其他方法代替Future Builder将我的数据粘贴到父项中?当然可以。然而,在理论上,它的工作方式与Futurebuilder相同。如果您不想使用“Futurebuilder”,那么您必须以同样的方式编写代码。它正在使用setState()。如果对你有帮助的话,我可以提供一个样品。话虽如此,“未来建设者”是A.现成的B.高效的;更重要的是,与编写我们自己的代码相比,坚持使用现成的代码是很好的:)您愿意通过编辑我的代码来给我一个示例代码吗?这就是一个例子_requestCriminalsFromAPI()进行API调用(在您的例子中,它是一个共享prefs)。加载数据前,_isLoadingCompleted为false,加载数据后设置为true。小部件的主体部分用于显示progressbar或基于true/false的实际小部件。(注意:代码正在构建中,可能不是最佳状态):)有帮助吗?如果你需要更多信息,请告诉我。