gpt4 book ai didi

flutter - 在新小部件中使用提供程序实例时哪个更好?

转载 作者:行者123 更新时间:2023-12-05 09:29:48 25 4
gpt4 key购买 nike

假设我编写了如下代码。我有一个名为 SampleProvider 的提供程序,我在我的主要小部件中使用它。

class SampleProvider extends ChangeNotifier {}

class MainWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
SampleProvider provider = Provider.of<SampleProvider>(context);
}
}

然后,我想制作一个新的小部件并在新的小部件中使用此提供程序。会有两个选择。首先,我只是在新的小部件中实例化另一个提供者,如下所示。

class NewWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
SampleProvider provider = Provider.of<SampleProvider>(context);
}
}

或者,我可以将它作为构造函数参数从主小部件发送到新小部件。像这样:

class NewWidget extends StatelessWidget {
final SampleProvider provider;
NewWidget(this.provider);

@override
Widget build(BuildContext context) {
}
}

我想第一个选项更好,因为 flutter 会根据其构建上下文绘制一个小部件,但我不确定。我用谷歌搜索了很长时间,但没有成功。谁能告诉我我是对还是错?还是它们没有区别?

最佳答案

首选第一种方案,更容易重构。

假设您需要在您的小部件树中移动NewWidget,如果您选择第二种解决方案,则还需要修改“参数传递”代码,而第一种解决方案则不需要。

Provider pacakage 的目的之一是顺便避免在 widget 树深处传递参数。

关于flutter - 在新小部件中使用提供程序实例时哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70343914/

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