Flutter应用启动管理插件flutter_apprun的使用

Flutter应用启动管理插件flutter_apprun的使用

Flutter AppRun

这是一个轻量级、易于使用的事件驱动状态管理系统,灵感来源于 AppRun JS

特性

  • 使用事件来驱动状态变化,易于理解。
  • 使用纯函数更新状态,易于测试状态变化。
  • 事件也驱动UI更新,无需使用 setState
  • 局部事件作用域限于小部件,无需担心全局事件。
  • 全局事件用于小部件间的通信,无需使用 ProviderBloc
  • 完全支持异步状态变化。

开始使用

通过以下命令安装插件:

flutter pub add flutter_apprun

然后在你的 Dart 文件中导入该包:

import 'package:flutter_apprun/flutter_apprun.dart';

使用方法

在你的小部件树中使用 AppRunWidget

AppRunWidget(
  state: initialState,
  update: update,
  builder: (BuildContext context, state) {
    return ... // 从状态构建的小部件树
  }
)
  • state 是初始状态。
  • update 是事件处理程序的集合。
  • builder 用于根据状态显示内容,每次状态变化时都会被调用。
  • 使用 app.run 触发全局事件。
  • 使用 AppRun.of(context).run 触发局部事件。

示例

一个带有两个按钮的计数页面,用于增加和减少计数。

定义初始状态

int initialState = 0;

定义事件处理程序集合

int add(int state, int delta) => state + delta;
Map update = {
  '@add': add,                      // 全局事件
  '+1': (state) => add(state, 1),   // 局部事件
  '-1': (state) => add(state, -1),  // 局部事件
};

在小部件树中使用 AppRunWidget

class HomePage extends StatelessWidget {
  final String title;

  const HomePage({super.key, required this.title});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return AppRunWidget(
      state: initialState,
      update: update,
      builder: (BuildContext context, state) {
        return Scaffold(
          appBar: AppBar(
            title: Text(title),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text(
                  '$state',
                  style: Theme.of(context).textTheme.headlineMedium,
                ),
              ],
            ),
          ),
          floatingActionButton: Column(
            mainAxisAlignment: MainAxisAlignment.end,
            children: [
              FloatingActionButton(
                heroTag: 'minus',
                onPressed: () => AppRun.of(context).run('-1'), // 局部事件
                tooltip: 'Decrement',
                child: const Icon(Icons.remove),
              ),
              FloatingActionButton(
                heroTag: 'plus',
                onPressed: () => AppRun.of(context).run('+1'), // 局部事件
                tooltip: 'Increment',
                child: const Icon(Icons.add),
              ),
            ],
          ),
        );
      },
    );
  }
}

更多关于Flutter应用启动管理插件flutter_apprun的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用启动管理插件flutter_apprun的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_apprun 是一个用于管理 Flutter 应用程序启动的插件,它可以帮助你在应用程序启动时执行一些初始化操作,或者根据某些条件决定是否启动应用程序。以下是如何使用 flutter_apprun 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_apprun 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  flutter_apprun: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

在你的 main.dart 文件中,初始化 flutter_apprun 插件。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 flutter_apprun
  await FlutterApprun.init();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter AppRun Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter AppRun Example'),
      ),
      body: Center(
        child: Text('Hello, World!'),
      ),
    );
  }
}

3. 使用 flutter_apprun 进行启动管理

你可以在 FlutterApprun.init() 方法中执行一些初始化操作,或者根据某些条件决定是否启动应用程序。

例如,你可以在应用程序启动时检查某个条件,如果条件不满足,则不启动应用程序。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 模拟一些初始化操作
  bool shouldLaunchApp = await checkSomeCondition();

  if (shouldLaunchApp) {
    // 初始化 flutter_apprun
    await FlutterApprun.init();

    runApp(MyApp());
  } else {
    // 不启动应用程序
    print('Application will not be launched.');
  }
}

Future<bool> checkSomeCondition() async {
  // 这里可以执行一些异步操作
  await Future.delayed(Duration(seconds: 2));
  return true;  // 返回 true 或 false 来决定是否启动应用程序
}

4. 其他功能

flutter_apprun 还提供了一些其他的功能,例如:

  • 延迟启动:你可以在应用程序启动前延迟一段时间。
  • 自定义启动逻辑:你可以根据不同的条件执行不同的启动逻辑。
await FlutterApprun.init(
  delay: Duration(seconds: 3),  // 延迟 3 秒启动
  onBeforeRun: () async {
    // 在应用程序启动前执行一些操作
    print('Before app run...');
  },
  onAfterRun: () async {
    // 在应用程序启动后执行一些操作
    print('After app run...');
  },
);
回到顶部