Flutter中Provider4.0的基本使用

1、新建状态管理类

class CategoryState with  ChangeNotifier{
  
  List<BxMallSubDto> _titleList = [];

  get titleList => _titleList;

  // 接口方法
  void updateRightTitles(List<BxMallSubDto> titleList) {
    _titleList = titleList;
    notifyListeners();
  }
}

2、注册状态管理类

void main() {
  return runApp(
    MultiProvider(
      providers:[
        ChangeNotifierProvider(create: (context)=>CategoryState())
      ],
      child: WineShop(),
    )
  );
}

3、状态组件绑定

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、状态变更

onTap: (){
  // 更新状态管理数据
  List<BxMallSubDto> titles = categories[index].bxMallSubDto;
  Provider.of<CategoryState>(context, listen: false).updateRightTitles(titles);

  setState(() {
    selectedIndex = index;
  });
}

Tips:listen这个参数好像要传值false,否则没效果,具体请参考Stack Overflow


先简单记录下使用方法,后期细节待完善。有更好意见欢迎表达!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 3,495评论 0 3
  • 一. Java基础部分.................................................
    wy_sure阅读 4,011评论 0 11
  • JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以...
    yangkg阅读 755评论 0 1
  • 1、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标...
    michaelgong阅读 922评论 0 1
  • 古老的哲学命题。 今天看到网上的消息,一则新闻稿,发觉,平凡的岗位,可以做出大文章。 我身边,有这样一些人,坚守初...
    白露秋月阅读 397评论 3 13

友情链接更多精彩内容