当与 ScopedDecendentModel 以及自定义模型一起使用时,Scoped 模型返回一个空列表 Widget

Scoped Model is returning an empty list Widget when used with ScopedDecendentModel along with custom Model

我一直在使用范围 class 但它总是无法 return 我的自定义模型 class 的特定列表,后者又显示我的占位符。此外,Scoped Model 不起作用 everywhere.i.e。它仅在某些特定位置有效。

我将所有包导入重命名为“import:'packages:...'”。 我还在使用 ScopedModelDecendant 之前声明了 Scoped Model,它能够呈现一些小部件,但没有 returned 和更新列表。

这只是我使用范围模型的代码片段:

import 'package:flutter/material.dart';
import 'package:flutter_course/widgets/ty/products/product_card.dart'

  import 'package:flutter_course/scoped_models/products.dart';
  import 'package:flutter_course/models/product.dart';

  import 'package:scoped_model/scoped_model.dart';

  class Products extends StatelessWidget {

    Widget _buildProductList(List<Product> products, BuildContext context) {
      Widget productCards;
      if (products.length > 0) {
        productCards = ListView.builder(
          itemBuilder: (BuildContext context, int index) {
            return ProductCard(products[index], index, context);
          },
          itemCount: products.length,
        );
      } else {
        productCards = Container(child: Text('List is empty  bro!'));
      }
      print('product card just before returning main page list');
      return productCards;
    }

    @override
    Widget build(BuildContext context) {
      print('[Products Widget] build()');

    return ScopedModel<ProductsModel>(model: ProductsModel(),child: ScopedModelDescendant(builder: (BuildContext context,Widget child,ProductsModel model){
      print('building list '+model.products.toString());
      return  _buildProductList(model.products, context);
    }),);
    }
  }

在您的示例中,您正在创建一个新的作用域模型抛出此代码

 return ScopedModel<ProductsModel>(model: ProductsModel(),child: ScopedModelDescendant(builder: (BuildContext context,Widget child,ProductsModel model){
  print('building list '+model.products.toString());
  return  _buildProductList(model.products, context);
}),);
}

所以我相信你没有使用你之前声明的主范围模型所以我建议你是否已经在代码之前声明了一个 ScopedModel 为了你不覆盖主要作用域模型

return  ScopedModelDescendant(builder: (BuildContext context,Widget child,ProductsModel model){
      print('building list '+model.products.toString());
      return  _buildProductList(model.products, context);
    });
    }