• flutter-状态管理(Provider)


    官网:https://pub.dev/packages/provider

    1.引入依赖

    provider: ^4.3.0
    2.新建文件夹Provider 用于管理状态
     
    3.新建文件cate.dart
    import 'package:flutter/material.dart';
    
    class MainProvide extends ChangeNotifier{
      int curNum=0;
      add(){
        curNum+=1;
        notifyListeners();
      }
      minus(){
        curNum -= 1;
        notifyListeners();
      }
    }

    4.在需要引用的地方引入

    import 'package:flutter/material.dart';
    import 'package:provider/provider.dart';
    import '../provider/cart.dart';
    import '../provider/cart2.dart';
    
    class CartPage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Container(
            child: MultiProvider(
              providers: [
                ChangeNotifierProvider(
                  create: (context){
                    return MainProvide();
                  }
                ),
                ChangeNotifierProvider(
                  create: (context){
                    return MainProvide2();
                  }
                )
              ],child: Column(
                children: <Widget>[
                  Number(),
                  MyButton()
                ],
              ),
            ),
          )
        );
      }
    }
    
    
    class Number extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        MainProvide provider=Provider.of<MainProvide>(context);
        MainProvide2 provider2=Provider.of<MainProvide2>(context);
        int curNum=provider.curNum;
        int curNum2=provider2.curNum;
        return Container(
          margin: EdgeInsets.only(top:200),
          child: Column(
            children: <Widget>[
              Text('$curNum'),
              Text('$curNum2'),
            ],
          )
          
        );
      }
    }
    
    class MyButton extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        MainProvide provider=Provider.of<MainProvide>(context);
        MainProvide2 provider2=Provider.of<MainProvide2>(context);
        return Container(
          child: RaisedButton(
            onPressed: (){
              provider.add();
              provider2.add();
            },
            child: Text('递增'),
          ),
        );
      }
    }
     
     
  • 相关阅读:
    2013年10月17日 搬出来了
    如何与领导相处
    WEB系统开发
    C++ 常用术语(后续补充)
    C++ 构造函数放置默认转换explicit关键字(2)
    工作与生活
    C++类型转化分析(1)
    (一)win7下cocos2d-x 21 + vs2010
    为了生活
    iOS
  • 原文地址:https://www.cnblogs.com/lxz-blogs/p/13279223.html
Copyright © 2020-2023  润新知