【发布时间】:2022-01-21 11:23:20
【问题描述】:
我正在创建一个 Flutter 应用程序。我在我的项目中添加了一个 BloC 用于管理状态。 我创建了一个包含数据的列表。我想使用按钮“添加”手动将项目添加到 ListView。
我写了一个代码:
我的物品肘
class ItemCubit extends Cubit<List<Item>> {
ItemCubit() : super([]);
void addItem(item){
state.add(item);
emit(state);
}
}
提供者的项目页面:
class SearchPage extends StatelessWidget {
const SearchPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: BlocProvider(
create: (_) => ItemCubit(),
child: Search(),
),
);
}
}
我在 Stateless Widget 中这样调用 BlocBuilder:
body: BlocBuilder<MarketCubit, List<Market>>(
builder: (context, items) => TabBarView(...))
所以当我从状态调用我的函数时:
Item item = Item(1, 'Item 1');
ElevatedButton(onPressed:(){
context.read<ItemCubit>().addItem(item);
}, child: Text('Add Item')),
ListView 没有更新。什么问题? 非常感谢!
【问题讨论】: