Flutter OpenAPI模型生成插件katana_model_openapi的使用

Flutter OpenAPI 模型生成插件 katana_model_openapi 的使用

Masamune logo

Katana Model OpenAPI 适配器

关注在 Twitter 关注在 Threads 使用 Melos 维护

GitHub 赞助


[GitHub] | [YouTube] | [Packages] | [Twitter] | [Threads] | [LinkedIn] | [mathru.net]


示例代码

example/lib/main.dart

// Flutter 相关导入
import 'package:flutter/material.dart';

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

// 主应用类
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      // 主页面
      home: const ListenablePage(),
      title: "Flutter 示例",
      theme: ThemeData(
        // 主题颜色
        primarySwatch: Colors.blue,
      ),
    );
  }
}

// 带有状态的页面类
class ListenablePage extends StatefulWidget {
  const ListenablePage({super.key});

  [@override](/user/override)
  State<StatefulWidget> createState() => ListenablePageState();
}

// 页面状态类
class ListenablePageState extends State<ListenablePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("Flutter 示例")),
      body: ListView(
        children: const [],
      ),
    );
  }
}

使用 katana_model_openapi 插件的完整示例

  1. 安装插件pubspec.yaml 文件中添加以下依赖项:

    dependencies:
      katana_model_openapi: ^1.0.0
    
  2. 定义 OpenAPI 模型 创建一个文件 models/openapi_models.dart 并定义你的 OpenAPI 模型。例如:

    import 'package:katana_model_openapi/katana_model_openapi.dart';
    
    // 定义一个简单的用户模型
    [@OpenApiModel](/user/OpenApiModel)()
    class User {
      final String name;
      final int age;
    
      User({
        required this.name,
        required this.age,
      });
    }
    
  3. 使用模型 在你的应用中使用这些模型进行数据处理。例如,在 main.dart 中:

    import 'package:flutter/material.dart';
    import 'models/openapi_models.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      [@override](/user/override)
      Widget build(BuildContext context) {
        return MaterialApp(
          home: ListenablePage(),
          title: "Flutter 示例",
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
        );
      }
    }
    
    class ListenablePage extends StatefulWidget {
      [@override](/user/override)
      State&lt;StatefulWidget&gt; createState() =&gt; ListenablePageState();
    }
    
    class ListenablePageState extends State&lt;ListenablePage&gt; {
      User user = User(name: "John Doe", age: 30);
    
      [@override](/user/override)
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title: const Text("Flutter 示例")),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text("Name: ${user.name}"),
                Text("Age: ${user.age}"),
              ],
            ),
          ),
        );
      }
    }
    

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

1 回复

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


katana_model_openapi 是一个用于 Flutter 的 OpenAPI 模型生成插件,可以帮助开发者从 OpenAPI 规范文件自动生成 Dart 模型类。这可以大大减少手动编写模型类的时间,并确保模型与 API 规范的一致性。

安装

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

dev_dependencies:
  katana_model_openapi: ^0.1.0

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

基本使用

  1. 准备 OpenAPI 规范文件: 确保你有一个 OpenAPI 规范文件(通常是一个 swagger.jsonopenapi.yaml 文件)。

  2. 配置 build.yaml: 在项目根目录下创建一个 build.yaml 文件,用于配置生成器的参数。以下是一个示例配置:

targets:
  $default:
    builders:
      katana_model_openapi:
        options:
          openapi_spec: 'path/to/your/openapi.yaml'
          output_dir: 'lib/models'
          package_name: 'my_app'
  • openapi_spec: OpenAPI 规范文件的路径。
  • output_dir: 生成的 Dart 模型文件的输出目录。
  • package_name: 你的应用包名,生成的模型类将使用该包名。
  1. 运行生成器: 在终端中运行以下命令来生成模型类:
flutter pub run build_runner build

生成的 Dart 模型类将出现在 lib/models 目录下。

高级配置

katana_model_openapi 还支持一些高级配置选项,例如自定义模型类的前缀、后缀,以及是否生成序列化/反序列化方法等。你可以在 build.yaml 中配置这些选项:

targets:
  $default:
    builders:
      katana_model_openapi:
        options:
          openapi_spec: 'path/to/your/openapi.yaml'
          output_dir: 'lib/models'
          package_name: 'my_app'
          class_prefix: 'Api'
          class_suffix: 'Model'
          generate_serialization: true
  • class_prefix: 生成的模型类的前缀。
  • class_suffix: 生成的模型类的后缀。
  • generate_serialization: 是否生成 fromJsontoJson 方法。

使用生成的模型

生成模型类后,你可以在 Flutter 项目中使用这些模型类来与 API 交互。例如:

import 'package:my_app/models/user_model.dart';

void main() {
  var user = UserModel.fromJson({
    'id': 1,
    'name': 'John Doe',
    'email': 'john.doe@example.com'
  });

  print(user.toJson());
}
回到顶部