我一直在使用作用域类,但是它始终无法返回我的自定义Model类的特定列表,而后者又显示了我的占位符。此外,作用域模型不适用于任何地方。它仅在某些特定位置有效。
我将所有包导入重命名为“ import:'packages:...”“。 在使用ScopedModelDecendant之前,我还声明了Scoped Model,它可以呈现某些小部件,但没有返回和更新List。
这只是我使用作用域模型的代码的片段:
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);
}),);
}
}
答案 0 :(得分:0)
在您的示例中,您正在创建一个新的作用域模型,并抛出此代码
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);
});
}