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('递增'),
          ),
        );
      }
    }
     
     
  • 相关阅读:
    iOS多线程编程之NSThread的使用
    在 VS 2013/2015 中禁用 nuget 包的源代码管理
    【转】辽宁北斗TV直播源
    Xamarin Crack
    在VisualStudio 编辑器文本替换中使用正则表达式
    Camtasia 录屏说明
    简化MSI在WIN10的安装
    在WPF中使用变通方法实现枚举类型的XAML绑定
    XAML UserControl的继承
    ArcGIS 10.1 BUG记录
  • 原文地址:https://www.cnblogs.com/lxz-blogs/p/13279223.html
Copyright © 2011-2022 走看看