【发布时间】:2020-04-13 17:58:47
【问题描述】:
我正在尝试在初始应用启动时显示启动画面,直到我正确检索到所有数据。检索由名为“ProductData”的类完成。一旦准备好,我想从启动页面导航到应用程序的主屏幕。
不幸的是,我找不到触发运行这种导航并侦听提供程序的方法的好方法。
这是我用来测试这个想法的代码。具体来说,我想运行命令 Navigator.pushNamed(context, 'home');当变量 shouldProceed 变为 true 时。不幸的是,下面的代码给了我错误,“在构建期间调用了 setState() 或 markNeedsBuild()。”
import 'package:catalogo/firebase/ProductData.dart';
import 'package:flutter/material.dart';=
import 'package:provider/provider.dart';
class RouteSplash extends StatefulWidget {
@override
_RouteSplashState createState() => _RouteSplashState();
}
class _RouteSplashState extends State<RouteSplash> {
bool shouldProceed = false;
@override
Widget build(BuildContext context) {
shouldProceed =
Provider.of<ProductData>(context, listen: true).shouldProceed;
if (shouldProceed) {
Navigator.pushNamed(context, 'home'); <-- The error occurs when this line is hit.
} else {
return Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
}
}
}
有没有更好的方法来根据提供者的结果导航到页面?
【问题讨论】:
标签: flutter triggers navigation splash-screen provider