flutter - 在 Flutter 中使用另一个嵌套模型的模型属性
问题描述
如何使用消费者从嵌套模型类访问 ViewModel 类的数据?
我知道我们可以使用ChangeNotifierProvider
并Consumer
从小部件访问视图模型。但我试图从没有上下文或build
方法的模型类中访问属性。将 ViewModel 传递给每个嵌套类的唯一选择是什么?如果我有多层嵌套怎么办?我该如何优化呢?
简化模型结构
class TabItemsViewModel{
bool grouped=false;
List<ProductItemModel> products = [...];
class ProductItemModel{
List<ProductItemAddonModel> addons=[...];
class ProductItemAddonModel{
bool grouped=false;
int get value{
// I'm trying access grouped property from TabItemsViewModel;
简化的小部件结构
class MyApp extends State<SussaApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: ChangeNotifierProvider(
create: (_) => TabItemsViewModel(),
child: TabItemsView(),
class TabItemsView extends StatelessWidget {
@override
Widget build(BuildContext context) {
final vm = Provider.of<TabItemsViewModel>(context);
return Column(
children: [
ListView.builder(
itemCount: vm.products.length,
itemBuilder: (BuildContext context, int index) {
return ProductItem(model: vm.products[index]);
谢谢
解决方案
推荐阅读
- c++ - 铸造 Derived** → Base** 错了吗?有什么选择?
- node.js - Vscode API:读取剪贴板文本内容
- c# - PreFlight Request 404 not found .net web api;对预检请求的响应未通过访问控制检查:它没有 http ok 状态
- c# - 单击工具条时停止显示类型光标
- sql - 在每个主键的指定打开和关闭日期之间为多个主键创建日期表
- python - Disqus 在设置了唯一 page.url 和 page.id 的所有页面上显示相同的评论
- ios - 为什么 iPhone XR、XS 和 XS Max 没有将环境图像应用到 ARKit 中的场景?
- c - 如何在定义的位置附加一个字符
- django - Django Rest Framework:使用 url slug 查找模型实例,而不是 pk(lookup_field,retrievemodelmixin)
- python - 如何在 python shell 中激活虚拟环境