Flutter Provider 是一个流行的状态管理库,用于构建可维护和可扩展的 Flutter 应用。以下是一些关于如何使用 Provider 的基础教程。

Provider 提供了一种简单的方式来管理应用的状态,使得状态变化可以在组件树中传播。

安装 Provider

首先,你需要在你的 Flutter 项目中添加 Provider 包。你可以在 pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  provider: ^6.0.0

然后运行 flutter pub get 来安装依赖。

基础使用

Provider 主要分为三个部分:ChangeNotifierChangeNotifierProviderConsumer

  • ChangeNotifier:任何想要通知其他组件其状态已更改的对象都应该实现这个接口。
  • ChangeNotifierProvider:这个包装器允许你在组件树中共享一个 ChangeNotifier 对象。
  • Consumer:这个包装器允许你订阅状态变化,并在状态更改时重建组件。

以下是一个简单的例子:

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

class CounterNotifier with ChangeNotifier {
  int _count = 0;

  int get count => _count;

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider(
      create: (context) => CounterNotifier(),
      child: Consumer<CounterNotifier>(
        builder: (context, counter, child) {
          return Scaffold(
            appBar: AppBar(
              title: Text('Provider Example'),
            ),
            body: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text('You have pushed the button this many times:'),
                  Text(
                    '${counter.count}',
                    style: Theme.of(context).textTheme.headline4,
                  ),
                ],
              ),
            ),
            floatingActionButton: FloatingActionButton(
              onPressed: () => counter.increment(),
              tooltip: 'Increment',
              child: Icon(Icons.add),
            ),
          );
        },
      ),
    );
  }
}

void main() {
  runApp(
    ChangeNotifierProvider(
      create: (context) => CounterNotifier(),
      child: MaterialApp(
        title: 'Flutter Provider Demo',
        home: MyHomePage(),
      ),
    ),
  );
}

更多详细教程,请参考官方文档

[center]Flutter_Provider_Example