我只是在颤抖中了解一肘。我在教程视频中学习,所以在那个视频中,导师制作了一个登录页面,其中包含一个电子邮件和密码文本字段以及一个登录按钮。在那段视频中,导师仍然使用旧版本的flutter_bloc。当我遵循其中一个代码行时出现警告
child: ElevatedButton(
onPressed: () {
context.watch<AuthCubit>().signIn(
_emailController.text,
_passwordController.text);
}
该代码写在 onPressed 功能按钮内。它说context.bloc
已弃用。当我尝试运行该应用程序时,它返回一个错误,因为我使用的 flutter_bloc 版本不支持 null 安全,所以我将它升级到当前版本(7.3.1),我在 6.1.0 版本更新日志中找到了这个(你可以看到它在flutter_bloc 更改日志中)
deprecated: context.bloc in favor of context.read and context.watch
因为我不知道我刚刚更改的区别context.bloc
然后context.watch
我再次运行该应用程序并返回另一个错误
Tried to listen to a value exposed with a provider, from outside of the widget tree.
This is likely caused by an event handler (like a button's onPressed) that called
Provider.of without passing `listen: false`.
To fix, write:
Provider.of<AuthCubit>(context, listen: false);
It is unsupported because may pointlessly rebuild the widget associated to the
the event handler, when the widget tree doesn't care about the value.
...
当我将其更改为context.read
有效时。我想知道它们之间的区别