美文网首页
Flutter 状态管理 Mobx 之使用

Flutter 状态管理 Mobx 之使用

作者: _凌浩雨 | 来源:发表于2019-12-19 16:59 被阅读0次

Flutter Mobx

Flutter Mobx Github

Build_runner

1. 依赖
dependencies:
  mobx: ^0.3.9+3
  flutter_mobx: ^0.3.3+3
dev_dependencies:
  # 用于mobx代码生成
  mobx_codegen: ^0.3.10+1
  build_runner: ^1.7.1
  • 下载包
flutter pub get
  • 导入
import 'package:flutter_mobx/flutter_mobx.dart';
2. 创建可观察对象
  • 生成文件步骤
    步骤:
  1. 创建 counter.dart
  2. 添加 part 'counter.g.dart';
  3. 添加 class Counter = CounterMobx with _$Counter;
  4. 执行命令: flutter packages pub run build_runner build
  5. 删除之内再生成: flutter packages pub run build_runner build --delete-conflicting-outputs
  6. 实时更新.g文件: flutter packages pub run build_runner watch
import 'package:mobx/mobx.dart';

/// 必须, 用于生成.g文件
part 'counter.g.dart';
class Counter = CounterMobx with _$Counter;

/// 步骤:
/// 1. 创建counter.dart
/// 2. 添加 part 'counter.g.dart';
/// 3. 添加 class Counter = CounterMobx with _$Counter;
/// 4. 执行命令: flutter packages pub run build_runner build
/// 5. 删除之内再生成: flutter packages pub run build_runner build --delete-conflicting-outputs
/// 6. 实时更新.g文件: flutter packages pub run build_runner watch

/// Counter可观察对象
abstract class CounterMobx with Store {
  /// 可观察的值
  @observable int value = 0;

  /// 加法
  @action void increment() {
    value++;
  }

  /// 减法
  @action void decrement() {
    value--;
  }

  /// 设置值
  @action void set(int value) {
    this.value = value;
  }
}
3. 页面使用
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:mobx/mobx.dart';
import 'package:state_manage/mobx/counter/counter.dart';

/// Mobx计数器页面
class CounterPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Mobx Counter',
      theme: ThemeData(primaryColor: Colors.blue),
      home: CounterStatePage(title: 'Mobx Counter'),
    );
  }
}

class CounterStatePage extends StatefulWidget {
  /// 标题
  final String title;
  CounterStatePage({Key key, this.title}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _CounterStatePageState();
}

class _CounterStatePageState extends State<CounterStatePage> {
  /// 创建管理者
  final Counter _counter = Counter();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'You have pushed the button this many times:',
              ),
              Observer( // 观察数据
                builder: (_) => Text(
                  '${_counter.value}',
                  style: Theme.of(context).textTheme.display1,
                ),
              )
            ],
          ),
        ),
        floatingActionButton: Column(
            crossAxisAlignment: CrossAxisAlignment.end,
            mainAxisAlignment: MainAxisAlignment.end,
            children: <Widget>[
              // 加
              Padding(
                padding: EdgeInsets.symmetric(vertical: 5.0),
                child: FloatingActionButton(
                  onPressed: _counter.increment,
                  tooltip: 'Increment',
                  child: Icon(Icons.add),
                ),
              ),
              // 减
              Padding(
                padding: EdgeInsets.symmetric(vertical: 5.0),
                child: FloatingActionButton(
                  onPressed: _counter.decrement,
                  tooltip: 'Decrement',
                  child: Icon(Icons.remove),
                ),
              )
            ]));
  }
}

注意: Observer的使用

  • 效果图
效果图.gif

相关文章

  • Flutter 状态管理 Mobx 之使用

    Flutter Mobx Flutter Mobx Github Build_runner 1. 依赖 下载包 导...

  • Flutter状态管理之路(四)

    接上一篇Flutter状态管理之路(三)此篇主要介绍flutter_mobx flutter_mobx 版本: d...

  • Flutter-常用第三方库最全版本

    状态管理MobX https://developer.school/flutter-state-managemen...

  • Mobx 使用

    为什么使用mobx? 最近项目中,使用了一种新的状态管理工具—Mobx,Mobx相较于redux之类的数据管理状态...

  • flutter mobx状态管理

    依赖 创建对象 以计数例子为例,创建一个counter.dart文件,代码如下: 注意:必须包含以下两行代码,才可...

  • Flutter状态管理之路(五)

    接上一篇Flutter状态管理之路(四)此篇主要介绍flutter_mobx Fish Redux 版本:0.2....

  • 初识 MobX + React-Native + React R

    MobX 简单、可扩展的状态管理(可观察的数据) 使用: 安装: npm install mobx --save。...

  • 使用mobx

    mobx树型结构组织项目状态管理 遵循mobx定义数据存储 一个简单的mobx数据仓库: 因为使用了mobx作为状...

  • Mobx入门(一)

    Mobx是什么 MobX实现简单、可扩展的状态管理。 使用MobX将应用变成响应式可归纳为三部曲: 定义状态并使其...

  • Flutter学习笔记状态管理学习之bLoc

    Flutter学习笔记 状态管理学习之bLoc 1.创建一个状态管理 首先使用Stream来实现的bLoc状态管理...

网友评论

      本文标题:Flutter 状态管理 Mobx 之使用

      本文链接:https://www.haomeiwen.com/subject/iquknctx.html