- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想解释 Provider package 之间的区别(使用 ChangeNotifier 和 ChangeNotifierProvider )和 Scoped Model package在 flutter 中。
看完这两种管理应用程序状态的方法后,我迷路了,因为我没有发现代码编写方法有任何实质性差异。
作用域模型包用法:
class CounterModelWithScopedModel extends Model {
int _counter = 0;
int get counter => _counter;
void increment() {
_counter++;
notifyListeners();
}
}
class CounterAppWithScopedModel extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new ScopedModel<CounterModelWithScopedModel>(
model: new CounterModelWithScopedModel(),
child: new Column(children: [
new ScopedModelDescendant<CounterModelWithScopedModel>(
builder: (context, child, model) => new Text('${model.counter}'),
),
new Text("Another widget that doesn't require scoped model")
])
);
}
}
提供程序包用法:
class CounterModelWithChangeNotifierProvider extends ChangeNotifier {
int _counter = 0;
int get counter => _counter;
void increment() {
_counter++;
notifyListeners();
}
}
class CounterAppWithChangeNotifierProvider extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new ChangeNotifierProvider(
builder: (context) => CounterModelWithChangeNotifierProvider(),
child: new Column(children: [
new Consumer<CounterModelWithChangeNotifierProvider>(
builder: (context, model, child) => new Text('${model.counter}')
),
new Text("Another widget that doesn't require consume")
])
);
}
}
现在假设我们有另一个小部件通过 CounterModelWithChangeNotifierProvider
和 CounterAppWithScopedModel
的 increment();
触发通知并导致小部件重建。
我最近接触了 flutter,我对应用程序状态的管理很困惑,我从 Notifier 开始,但在看到有无数种方法后,我不知道该怎么做。你有什么建议?
最佳答案
TD;DR:
provider
不是 scoped_model
但可用于模拟 scoped_model
架构。
scoped_model
是一种架构,基于 Listenable
的子类:Model
,现在内置于 Flutter 中,名称为 ChangeNotifier
provider
不是一种架构,而是一种传递状态和管理状态的方法。它可以用于制作类似scoped_model
的架构,但它也可以做其他事情。
关于flutter - Flutter 中 ChangeNotifierProvider 和 ScopedModel 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56886805/
我对这个框架很陌生,并在我遇到的地方使用提供程序包进行状态管理 ChangeNotifierProvider和 ChangeNotifierProvider.value ,但我无法区分它们的用例。 我
我有一个代表电影列表的小部件,在我的模型中,我有 getMovies() 函数,它从网络请求中检索电影列表: enum MovieListState { IDLE, LOADING, ERROR }
我正在查看 flutter 网站上的以下代码: void main() { runApp( MultiProvider( providers: [ Change
我正在尝试使用 Flutter Provider package 中的 ChangeNotifierProvider 类.但是,它给我一个错误,说 The method isn't defined f
我最近开始使用 provider用于我的状态管理,我知道如何一次使用一个。 class Home extends StatelessWidget { @override Widget buil
我正在尝试添加网格列表,同时添加第二个网格的项目时发现以下错误: Error: Could not find the correct Provider above this PropertiesGri
这两个小部件之间有什么区别以及使用它的必要性ChangeNotifier在每个 Provider或者有很多使用方法Provider ? 最佳答案 提供者在小部件树下公开一个值,以便 children
我正在使用 ChangeNotifierProvider 来处理我的 Flutter 应用的应用状态。 我的 main.dart 文件 import 'package:flutter/material
是否可以添加相同类型的多个 ChangeNotifierProvider? return MultiProvider( providers: [ ChangeNotifierProvi
我不太明白 Provider.of() 和 Consumer 之间的区别。我读过here Consumer 就像 Provider.of with listen: true。 但是,在下面的示例中,我
我收到以下错误 - I/flutter (18695): The following StackOverflowError was thrown building Consumer(dirty, de
在我的 Flutter 应用中, 我想在 listView 中显示多个项目, 我想使用 Provider 处理它们的状态。 但是如果我在 ListView 中编辑一个项目,那么我该如何处理状态呢?只有
我想解释 Provider package 之间的区别(使用 ChangeNotifier 和 ChangeNotifierProvider )和 Scoped Model package在 flut
在深入研究我的应用程序的功能之前,我正在努力使我的 flutter 架构尽可能好。我已经基于 ChangeNotifierProvider 制作了一个带有 firebase Authentificat
我想在我的项目中为 Provider ( ChangeNotifierProvider ) 创建一个单元测试,我的单元测试、小部件测试和集成测试成功通过 ✔️,所以现在我尝试(努力尝试🥵...)创建
我是一名优秀的程序员,十分优秀!