Flutter代码生成插件keeper_codegen的使用

Flutter代码生成插件keeper_codegen的使用

Keeper Codegen 是一个用于提供代码生成的包,适用于 Keeper

特性

  • ✅ 支持常见类
  • ❌ 不支持 MobX 存储

开始使用

这个包用于与 Keeper 一起使用,以便为存储类字段到不同存储容器提供简易设置。

首先,确保你的项目已经配置好使用 Keeper。然后运行以下命令来生成执行所有魔法操作的文件。✨

使用方法

pubspec.yaml 文件中:

dev_dependencies:
  build_runner: ^2.1.5 # 检查 pub.dev 上的最新版本
  keeper_codegen: ^0.0.1

为了生成你的类的 .g.dart 文件,运行以下命令:

flutter pub run build_runner build

额外信息

Keeper 项目的代码可以在 GitHub 上找到。

欢迎贡献和提交错误报告!请包含相关信息以帮助解决错误。

该项目在 MIT 许可证 下授权。


示例代码

项目结构

假设你有一个简单的项目结构如下:

my_project/
├── lib/
│   ├── main.dart
│   └── user_model.dart
├── pubspec.yaml
└── ...

pubspec.yaml

pubspec.yaml 中添加依赖项:

dev_dependencies:
  build_runner: ^2.1.5 # 检查 pub.dev 上的最新版本
  keeper_codegen: ^0.0.1

user_model.dart

创建一个简单的用户模型类,并使用 @Generate 注解标记它:

import 'package:keeper/keeper.dart';

// 定义一个简单的用户模型类
class UserModel {
  final String name;
  final int age;

  UserModel({required this.name, required this.age});
}

// 使用 @Generate 注解标记这个类
@Generate()
class GeneratedUserModel extends UserModel {
  // 自动生成的构造函数和其他方法
}

main.dart

在主文件中使用生成的类:

import 'package:flutter/material.dart';
import 'package:keeper/keeper.dart';
import 'user_model.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Keeper Codegen Example'),
        ),
        body: Center(
          child: Text(
            'Hello, Keeper Codegen!',
            style: TextStyle(fontSize: 24),
          ),
        ),
      ),
    );
  }
}

// 在主函数中运行代码生成器
Future<void> mainRunner() async {
  await build();
  runApp(MyApp());
}

运行代码生成

在终端中运行以下命令来生成 .g.dart 文件:

flutter pub run build_runner build

更多关于Flutter代码生成插件keeper_codegen的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter代码生成插件keeper_codegen的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


keeper_codegen 是一个用于 Flutter 的代码生成插件,通常与 keeper 包一起使用,用于简化状态管理和依赖注入的代码生成。keeper 是一个轻量级的状态管理工具,而 keeper_codegen 则通过生成代码来减少手动编写样板代码的工作量。

使用步骤

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 keeperkeeper_codegen 依赖:

dependencies:
  flutter:
    sdk: flutter
  keeper: ^最新版本

dev_dependencies:
  build_runner: ^最新版本
  keeper_codegen: ^最新版本

运行 flutter pub get 以安装依赖。

2. 创建模型类

假设你有一个简单的 User 类,你希望使用 keeper 来管理它的状态。

import 'package:keeper/keeper.dart';

@KeeperModel()
class User {
  final String name;
  final int age;

  User(this.name, this.age);
}

@KeeperModel() 注解告诉 keeper_codegen 为这个类生成相应的代码。

3. 生成代码

在终端中运行以下命令来生成代码:

flutter pub run build_runner build

这将生成一个与 User 类相关的文件,例如 user.keeper.dart,其中包含用于状态管理的代码。

4. 使用生成的代码

生成的代码通常会包含一个 UserKeeper 类,你可以使用它来管理 User 状态。

import 'package:flutter/material.dart';
import 'user.dart'; // 导入你的 User 类
import 'user.keeper.dart'; // 导入生成的代码

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Keeper Example')),
        body: UserProvider(
          user: User('John Doe', 30),
          child: UserView(),
        ),
      ),
    );
  }
}

class UserView extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    final userKeeper = UserKeeper.of(context);
    final user = userKeeper.user;

    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Text('Name: ${user.name}'),
          Text('Age: ${user.age}'),
          ElevatedButton(
            onPressed: () {
              userKeeper.updateUser(User('Jane Doe', 25));
            },
            child: Text('Update User'),
          ),
        ],
      ),
    );
  }
}
回到顶部