1、新建狀態(tài)管理類
class CategoryState with ChangeNotifier{
List<BxMallSubDto> _titleList = [];
get titleList => _titleList;
// 接口方法
void updateRightTitles(List<BxMallSubDto> titleList) {
_titleList = titleList;
notifyListeners();
}
}
2、注冊(cè)狀態(tài)管理類
void main() {
return runApp(
MultiProvider(
providers:[
ChangeNotifierProvider(create: (context)=>CategoryState())
],
child: WineShop(),
)
);
}
3、狀態(tài)組件綁定
child: Consumer<CategoryState>(
builder: (context, categoryState, child){
return ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: categoryState.titleList.length,
itemBuilder: (context, index){
return buildListViewCell(categoryState.titleList[index]);
}
);
}
)
4、狀態(tài)變更
onTap: (){
// 更新?tīng)顟B(tài)管理數(shù)據(jù)
List<BxMallSubDto> titles = categories[index].bxMallSubDto;
Provider.of<CategoryState>(context, listen: false).updateRightTitles(titles);
setState(() {
selectedIndex = index;
});
}
Tips:listen這個(gè)參數(shù)好像要傳值false,否則沒(méi)效果,具體請(qǐng)參考Stack Overflow