Flutter 颤振:从main()方法更改小部件的状态
我正在尝试从存储器读取数据,读取完成后,我需要更新类的状态Flutter 颤振:从main()方法更改小部件的状态,flutter,Flutter,我正在尝试从存储器读取数据,读取完成后,我需要更新类的状态\u MyAppState。 访问配置单元是在main方法中完成的,因为初始化的配置单元框也可以在其他类中访问 下面给出了我编写的代码。我需要的是在读取完成后,从main()方法更新\u MyAppState类的变量\u load void main() async { var _dataReadFromHive = {}; runApp(MyApp()); final appDocDir = await path_pr
\u MyAppState
。
访问配置单元是在main方法中完成的,因为初始化的配置单元框也可以在其他类中访问
下面给出了我编写的代码。我需要的是在读取完成后,从main()方法更新\u MyAppState
类的变量\u load
void main() async {
var _dataReadFromHive = {};
runApp(MyApp());
final appDocDir = await path_provider.getApplicationDocumentsDirectory();
await Hive.init(appDocDir.path);
//read data from hive
Hive.openBox('data').then((status){
var box = Hive.box('data');
//read data
//after reading, update the state of MyAppState class
});
}
...
class _MyAppState extends State<MyApp>{
var _loading = true;
Widget build(BuildContext context){
return Material(
child:Center(
child : _loading ? CircularProgressIndicator() : Text("Loaded"),
),
);
}
}
void main()异步{
var_dataReadFromHive={};
runApp(MyApp());
final appDocDir=等待路径_provider.getApplicationDocumentsDirectory();
等待Hive.init(appDocDir.path);
//从配置单元读取数据
openBox('data')。然后((状态){
var-box=Hive.box(“数据”);
//读取数据
//读取后,更新MyAppState类的状态
});
}
...
类MyAppState扩展了状态{
var_加载=真;
小部件构建(构建上下文){
退货(
儿童:中心(
子项:_加载?CircularProgressIndicator():文本(“加载”),
),
);
}
}
请帮我做这个。我试过了,但我错过了一些东西(我是一个不安的人)
感谢您的帮助。您不需要从主功能更新状态。 如代码所示,从initState调用函数,并从那里更新应用程序的状态 我希望这有帮助
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
MyApp({Key key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
var _loading = false;
@override
void initState() {
readDataFromHive();
super.initState();
}
@override
Widget build(BuildContext context) {
return Material(
child: Center(
child: _loading ? CircularProgressIndicator() : Text("Loaded"),
),
);
}
void readDataFromHive() async{
setState(() {
_loading = true;
});
final appDocDir = await path_provider.getApplicationDocumentsDirectory();
await Hive.init(appDocDir.path);
//read data from hive
Hive.openBox('data').then((status) {
var box = Hive.box('data');
//read data
//after reading, update the state of MyAppState class
setState(() {
_loading = false;
});
});
}
}
void main()=>runApp(MyApp());
类MyApp扩展了StatefulWidget{
MyApp({Key}):超级(Key:Key);
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
var_加载=错误;
@凌驾
void initState(){
readDataFromHive();
super.initState();
}
@凌驾
小部件构建(构建上下文){
退货(
儿童:中心(
子项:_加载?CircularProgressIndicator():文本(“加载”),
),
);
}
void readDataFromHive()异步{
设置状态(){
_加载=真;
});
final appDocDir=等待路径_provider.getApplicationDocumentsDirectory();
等待Hive.init(appDocDir.path);
//从配置单元读取数据
openBox('data')。然后((状态){
var-box=Hive.box(“数据”);
//读取数据
//读取后,更新MyAppState类的状态
设置状态(){
_加载=假;
});
});
}
}