Flutter笔记--provider

          这一节主要介绍Flutter中一个状态管理库provider,它也是Google推荐使用的。provider是对InheritedWidget进行包装,使其更易于使用和重用。为什么需要状态管理,因为为了防止更新应用UI冲突,比如多个页面共享同一个状态,比如当你进入一个兴趣列表选择时,选择完成后,退到个人信息页时能够同步展示 兴趣的数量;

            provider的使用简单理解为如下:1 创建继承自 ChangeNotifier 的共享类;  2 设置数据; 3 获取数据,两种方式,分别是Provider.of(context) 和 Consumer;

栗子:

依赖: provider: ^4.0

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<Counter>( // <=== PROVIDER
      builder: (context) => Counter(),
      child: MaterialApp(
        title: 'Counter App - Compact',
        home: Scaffold(
          appBar: AppBar(
            title: Text("Page Title"),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Consumer<Counter>( // <=== DEPENDENT
                  builder: (context, counter, child) => Text(
                    '${counter.count}',
                    style: Theme.of(context).textTheme.display1,
                  ),
                ),
                Builder(builder: (context) { // <=== DEPENDENT
                  final counter = Provider.of<Counter>(context, listen: false);
                  return RaisedButton(
                    onPressed: () => counter.increment(),
                    child: Text("Increment"),
                  );
                }),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

class Counter with ChangeNotifier {
  int count = 0;

  void increment() {
    ++count;
    notifyListeners();
  }
}

官网:provider

猜你喜欢

转载自blog.csdn.net/ljt2724960661/article/details/114434421