每次重新启动App:This widget has been unmounted, so the State no longer has a context (and should be considered defunct).时,我都会出错,发现我的状态不正确。initState是:
@override
void initState() {
SchedulerBinding.instance.addPostFrameCallback((_) {
BlocProvider.of<TutSkippedCubit>(context).load();
哪种类型的小部件不会有不能改变的状态/属性?我想不出任何可能的事情。按钮有文本,图像有大小,文本有颜色,等等。什么小部件会没有某种属性呢?
在Flutter演示代码中,"MyApp“是无状态的,但它具有属性。为什么这是无状态的,而不是有状态的?
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
titl
我是新手,当我想在InitState中调用我的上下文时,它会抛出一个错误:这是关于BuildContext.inheritFromWidgetOfExactType的,但是我使用了didChangeDependencies,它正确地工作。
现在我有两个问题:
1-为什么在initState中调用我们的上下文不起作用,但是它在从didChangeDependencies调用时工作呢?(因为正如我在官方文档This method is also called immediately after [initState]中所读到的那样,在构建方法之前将调用这两个方法。)
2-为什么我们可以在构建方法之
我有一个小部件,它显示一个用户列表。当单击list元素时,将创建一个新的MaterialPageRoute并将其推送到Navigator,以打开显示消息历史记录的用户的聊天屏幕。
class Users extends StatefulWidget {
final User user;
Users({this.user});
@override
UsersState createState() => new UsersState();
}
class UsersState extends State<Users> {
Map<String, C
根据Flutter的文档和,据我所理解,提供者包的context.read<T>和context.watch<T>方法之间的一个关键区别在于触发小部件的重建。您可以在任何小部件的build方法中调用build来访问当前状态,并在状态更改时请求Flutter重新构建您的小部件。您不能在构建方法之外使用context.watch<T>(),因为这通常会导致微妙的bug。相反,他们说,使用context.read<T>(),它获得当前状态,但不要求颤振未来的重建。
我试着制作了这个简单的应用程序:
class MyDataNotifier extend