[英]Flutter - Pass data from a Future variable(sqlite) to a widget
我对 Flutter 和 Dart 非常陌生,但我正在尝试从 sqlite 方法获取数据并将其作为参数传递给新的小部件。 我试过使用 FutureBuilder 并没有帮助。
我正在调用加载数据的方法,等待数据 in.then() 然后在里面设置 class 变量的 state 稍后分配给小部件,但变量 _records 始终是 Z37A6259CC0C1DAE299A786648 之后
Below is my code
int initScreen;
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
initScreen = await prefs.getInt("initScreen");
await prefs.setInt("initScreen", 1);
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
MyAppState createState() => MyAppState();
}
class MyAppState extends State{
List<Quarter> _records;
@override
void initState() {
_getRecords();
super.initState();
}
_getRecords() async {
await QuarterData().getQuarters().then((list){
setState((){
this. _records = list;
});
});
return list;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'UI',
debugShowCheckedModeBanner: false,
home: initScreen == 0 || initScreen == null
? SpashScreen(this._records)
: QuartersHome(this._records)
);
}
}
非常感谢
this._records
未初始化,将是 null 直到您的查询未完成。
您需要检查它是否不是 null 在返回您的小部件之前(就像您使用initScreen
)
如果在setState()
方法之后您的变量仍然是 null,那么可能是您的查询返回 null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.