Flutter项目创建辅助插件creator的使用

发布于 1周前 作者 nodeper 来自 Flutter

Flutter项目创建辅助插件creator的使用

简介

Creator 是一个状态管理库,它使得业务逻辑代码简洁、流畅、易读且易于测试。通过 Creator,您可以安全地读取和更新状态,并编写干净且可测试的业务逻辑。

Logo

Pub Build Status Codecov

快速开始

安装

在您的 pubspec.yaml 文件中添加 Creator:

dependencies:
  creator: ^最新版本号

然后运行以下命令来安装依赖:

dart pub add creator

使用示例

基本用法

创建和更新状态

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

void main() {
  runApp(CreatorGraph(child: const MyApp()));
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: CounterPage(),
    );
  }
}

final counter = Creator.value(0);

class CounterPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Counter')),
      body: Column(
        children: [
          // Watcher 将在 counter 变化时重新构建
          Watcher((context, ref, _) => Text('${ref.watch(counter)}')),
          TextButton(
            // 更新状态非常简单
            onPressed: () => context.ref.update<int>(counter, (count) => count + 1),
            child: const Text('+1'),
          ),
        ],
      ),
    );
  }
}

处理异步数据

// repo.dart

// 模拟调用后端服务获取温度
Future<int> getFahrenheit(String city) async {
  await Future.delayed(const Duration(milliseconds: 100));
  return 60 + city.hashCode % 20;
}

// logic.dart

// 简单的 creators 绑定到 UI
final cityCreator = Creator.value('London');
final unitCreator = Creator.value('Fahrenheit');

// 使用方法如 map, where 等编写流畅代码
final fahrenheitCreator = cityCreator.asyncMap(getFahrenheit);

// 结合 creators 进行业务逻辑处理
final temperatureCreator = Emitter<String>((ref, emit) async {
  final f = await ref.watch(fahrenheitCreator);
  final unit = ref.watch(unitCreator);
  emit(unit == 'Fahrenheit' ? '$f F' : '${f2c(f)} C');
});

// 华氏转摄氏度转换器
int f2c(int f) => ((f - 32) * 5 / 9).round();

// main.dart

class TemperaturePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Temperature')),
      body: Center(
        child: Watcher((context, ref, _) =>
            Text(ref.watch(temperatureCreator.asyncData).data ?? 'loading')),
      ),
    );
  }
}

更多功能

  • 监听变化:使用 watch(someCreator.change) 获取 Change<T> 对象。
  • 命名:为 creators 设置名称以便于日志记录。
  • 保持活跃:使用 keepAlive 参数保持 creator 的活跃状态。
  • 扩展方法:使用 map, where, reduce 等方法简化代码。
  • 错误处理:自然地处理错误并在需要的地方进行重试等操作。
  • 测试:轻松编写测试用例,结合 watch, read, set 方法。

示例项目

简单计数器应用

DartPad链接

天气应用

DartPad链接

新闻应用

DartPad链接

最佳实践

  • 将代码拆分为 repo 文件(后端服务调用)、logic 文件(creator)和 UI 文件(widget)。
  • 保持 creator 小巧以提高可测试性,将派生状态放在派生的 creators 中(使用 map, where 等)。

总结

Creator 提供了一种简洁且强大的方式来管理 Flutter 应用的状态。希望您喜欢使用 Creator,并欢迎反馈和贡献!


以上是关于 Flutter 项目创建辅助插件 Creator 的使用指南。如果您有任何问题或需要进一步的帮助,请随时提问!


更多关于Flutter项目创建辅助插件creator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter项目创建辅助插件creator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中,使用辅助插件可以极大地提高开发效率。creator 是一个假设的插件名称,用于演示如何在Flutter项目中创建并使用一个辅助插件。请注意,由于creator不是一个真实存在的广泛认可的插件名,我将基于一个典型的Flutter插件开发流程来展示如何创建和使用一个类似的插件。

1. 创建Flutter插件

首先,我们需要创建一个Flutter插件。Flutter插件通常包含平台特定的代码(如iOS的Swift/Objective-C和Android的Kotlin/Java)以及Dart代码。以下是如何创建一个新的Flutter插件的步骤:

使用Flutter命令行工具创建插件

flutter create --template=plugin my_creator_plugin

这将创建一个名为my_creator_plugin的新Flutter插件项目。

2. 编写插件代码

假设我们的creator插件提供了一个简单的功能:生成一个带有指定文本的Widget。我们将在插件的Dart代码中实现这个功能。

编辑lib/my_creator_plugin.dart

import 'package:flutter/material.dart';

class CreatorPlugin {
  static Widget createTextWidget({required String text}) {
    return Text(
      text,
      style: TextStyle(fontSize: 24, color: Colors.blue),
    );
  }
}

3. 在Flutter应用中使用插件

现在我们已经创建了插件,接下来我们需要在Flutter应用中使用它。

添加插件依赖

首先,将插件添加到你的Flutter应用的pubspec.yaml文件中:

dependencies:
  flutter:
    sdk: flutter
  my_creator_plugin:
    path: ../path/to/my_creator_plugin  # 使用本地路径引用插件

注意:在实际项目中,你可能会从pub.dev发布并使用插件,而不是使用本地路径。

使用插件功能

编辑你的Flutter应用的主文件(例如lib/main.dart),使用插件提供的功能:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Creator Plugin Demo'),
        ),
        body: Center(
          child: CreatorPlugin.createTextWidget(text: 'Hello, Flutter Plugin!'),
        ),
      ),
    );
  }
}

4. 运行应用

确保你的Flutter开发环境已经正确设置,然后运行应用:

flutter run

如果一切设置正确,你应该会在模拟器或真实设备上看到一个显示“Hello, Flutter Plugin!”的Text Widget。

总结

以上示例展示了如何创建一个简单的Flutter插件,并在Flutter应用中使用它。虽然这里使用的插件名称是my_creator_plugin而不是creator,但流程是通用的。你可以根据需要扩展插件的功能,并在你的Flutter项目中高效地利用这些功能。

回到顶部