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('遞增'),
      ),
    );
  }
}

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM