gpt4 book ai didi

android - flutter_bloc 中的 context.watch 和 context.read 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 23:58:53 35 4
gpt4 key购买 nike

我只是在 flutter 中了解一肘。我在教程视频中学习,所以在那个视频中,导师制作了一个登录页面,其中包含一个电子邮件和密码文本字段以及一个登录按钮。在那段视频中,导师仍然使用旧版本的flutter_bloc。当我遵循其中一个代码行时出现警告

child: ElevatedButton(
onPressed: () {
context.watch<AuthCubit>().signIn(
_emailController.text,
_passwordController.text);
}
该代码写在 onPressed 功能按钮内。
它说 context.bloc已弃用。当我尝试运行该应用程序时,它返回一个错误,因为我使用的flutter_bloc版本不支持空安全,所以我将它升级到当前版本(7.3.1),我在版本 6.1.0 更改日志中找到了这个(你可以看到它在 flutter_bloc change log )
deprecated: context.bloc in favor of context.read and context.watch
因为不知道区别我就改了 context.bloccontext.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有用。我想知道它们之间的区别

最佳答案

context.watch<T>()听 T 上的变化context.read<T>()不听就返回 T
你在打电话

context.watch<AuthCubit>().signIn(
_emailController.text,
_passwordController.text);
ElevatedButton's onPressed()从而收听 AuthCubit从小部件树外部与提供者一起公开。当您将其更改为使用 context.read<AuthCubit>你返回 AuthCubit无需从小部件树外部收听它。

关于android - flutter_bloc 中的 context.watch 和 context.read 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69807654/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com