zoukankan      html  css  js  c++  java
  • 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('递增'),
          ),
        );
      }
    }
     
     
  • 相关阅读:
    Rsync数据同步详情及配置
    ssh密钥及发放
    ssh服务及简单应用
    二叉搜索树的第k个结点
    序列化二叉树
    把二叉树打印成多行
    按之字形顺序打印二叉树
    对称的二叉树
    二叉树的下一个结点
    删除链表中重复的结点
  • 原文地址:https://www.cnblogs.com/lxz-blogs/p/13279223.html
Copyright © 2011-2022 走看看