首页 > 解决方案 > 在 Flutter 中使用另一个嵌套模型的模型属性

问题描述

如何使用消费者从嵌套模型类访问 ViewModel 类的数据?

我知道我们可以使用ChangeNotifierProviderConsumer从小部件访问视图模型。但我试图从没有上下文或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]);

谢谢

标签: flutterdartnestedflutter-providerscoped-model

解决方案


推荐阅读