flutter的provider4.0使用

dependencies:
  flutter:
    sdk: flutter
  # 状态管理 https://github.com/rrousselGit/provider
  provider: ^4.3.3

Counter.dart

import 'package:flutter/material.dart';

class Counter with ChangeNotifier {
  int _count = 0;
  int get count => _count;  //外部使用
  void incCount() {         //更新状态
    this._count++;
    notifyListeners();        //表示更新状态
  }
}




  main.dart 


import 'package:flutter/material.dart';
import 'package:flutters/pagea.dart';
import 'package:flutters/pageb.dart';
import 'package:flutters/provider/Counter.dart';
import 'package:provider/provider.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}


class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return  MultiProvider(
        providers: [
          ChangeNotifierProvider(create: (_)=>Counter()),
        ],
        child: Consumer<Counter>(
            builder: (_,Counter counter,__){
            return MaterialApp(
              title: "测试数据",
              home:MyHomePage(),
              builder: (BuildContext context, Widget child) {
                return MediaQuery(
                  data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
                  child: child,
                );
              },
            );
    },
   )

    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("测试数据"),
      ),
      body: Center(
        child: Column(
          children: [
            FlatButton(onPressed: (){
             Navigator.push(context, MaterialPageRoute(builder: (_){
               return PageA();
             }));
            }, child: Text("设置")),
            FlatButton(onPressed: (){
              Navigator.push(context, MaterialPageRoute(builder: (_){
                return PageB();
              }));
            }, child: Text("获取"))
          ],
        ),
      ),
    );
  }
}

 pageA.dart

import 'package:flutter/material.dart';
import 'package:flutters/provider/Counter.dart';
import 'package:provider/provider.dart';

class PageA extends StatefulWidget {
  PageA({Key key}):super(key:key);

  @override
  _PageAState createState() => _PageAState();
}
class _PageAState extends State<PageA> {
  @override
  Widget build(BuildContext context) {
   var counterProvider= Provider.of<Counter>(context);    //获取其上下文
    return Scaffold(
      appBar: AppBar(
        title: Text("pageA"),
      ),
      body: Center(
        child: FlatButton(
          onPressed: (){
           counterProvider.incCount();
          },
          child: Text('${counterProvider.count}'),

        ),
      ),
    );
  }
}

pageB.dart

import 'package:flutter/material.dart';
import 'package:flutters/provider/Counter.dart';
import 'package:provider/provider.dart';

class PageB extends StatefulWidget {
  @override
  _PageBState createState() => _PageBState();
}
class _PageBState extends State<PageB> {
  @override
  Widget build(BuildContext context) {
    var counterProvider= Provider.of<Counter>(context);    //获取其上下文
    return Scaffold(
      appBar: AppBar(
        title: Text("pageA"),
      ),
      body: Center(
        child: FlatButton(
            child:Text("${counterProvider.count}")
        ),
      ),
    );
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值