Flutter界面生成与预览插件widgetbook_generator的使用

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

Flutter界面生成与预览插件widgetbook_generator的使用

WidgetbookLogo

Discord style: very_good_analysis GitHub Workflow Status

Widgetbook Generator

widgetbook_generator 是一个用于生成和配置 widgetbook 代码的工具,简化了使用和维护 Widgetbook 的过程。

文档

更多文档和示例请参见 docs.widgetbook.io

使用方法

添加依赖

pubspec.yaml 文件中添加 widgetbook_generator 作为开发依赖:

dev_dependencies:
  widgetbook_generator: ^最新版本号

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

flutter pub get

配置

创建或编辑 build.yaml 文件,添加以下内容以配置 widgetbook_generator

targets:
  $default:
    builders:
      widgetbook_generator|widgetbook_builder:
        generate_for:
          include:
            - lib/**/*.dart

生成代码

在项目根目录下运行以下命令来生成代码:

flutter pub run build_runner build

这将会根据你的配置生成必要的代码文件。

示例代码

下面是一个完整的示例项目结构和代码,展示了如何使用 widgetbook_generator 来生成和预览 Flutter 界面。

项目结构

.
├── lib
│   └── widgets
│       └── button.dart
└── widgetbook
    └── widgets.dart

button.dart

import 'package:flutter/material.dart';

class MyButton extends StatelessWidget {
  final String text;
  final VoidCallback onPressed;

  const MyButton({
    Key? key,
    required this.text,
    required this.onPressed,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: onPressed,
      child: Text(text),
    );
  }
}

widgets.dart

import 'package:widgetbook_annotation/widgetbook_annotation.dart';
import 'package:my_app/lib/widgets/button.dart';

@WidgetbookUseCase(name: 'Default', type: MyButton)
MyButton defaultButton() => MyButton(
      text: 'Click me',
      onPressed: () {},
    );

@WidgetbookUseCase(name: 'Disabled', type: MyButton)
MyButton disabledButton() => MyButton(
      text: 'Disabled',
      onPressed: null,
    );

运行 Widgetbook

确保你已经安装了 widgetbook,然后在项目根目录下运行以下命令启动 Widgetbook:

flutter pub run widgetbook

这将启动一个本地服务器,并在浏览器中打开 Widgetbook,你可以在这里预览和交互不同的 Widget 情景。

通过以上步骤,你可以轻松地使用 widgetbook_generator 来生成和预览 Flutter 界面。希望这些信息对你有所帮助!如果有任何问题,请随时访问 官方文档 或加入 Discord 社区 获取支持。


更多关于Flutter界面生成与预览插件widgetbook_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter界面生成与预览插件widgetbook_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何使用 widgetbook_generator 插件来生成和预览 Flutter 界面的代码案例。widgetbook_generator 是一个用于自动生成 Flutter WidgetBook 的工具,WidgetBook 是一个用于快速预览和测试 Flutter widget 的工具。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  widgetbook: ^latest_version  # 替换为最新版本号

dev_dependencies:
  build_runner: ^latest_version  # 替换为最新版本号
  widgetbook_generator: ^latest_version  # 替换为最新版本号

2. 创建 WidgetBook 文件

在你的 Flutter 项目根目录下,运行以下命令来生成 widgetbook.dart 文件:

flutter pub run widgetbook_generator:generate

这个命令会自动扫描你的项目,并生成一个包含项目中所有 widget 的 widgetbook.dart 文件。

3. 配置 widgetbook.dart

生成的 widgetbook.dart 文件会包含项目中所有可识别的 widget。你可以根据需要编辑这个文件,以自定义哪些 widget 出现在 WidgetBook 中。例如:

import 'package:flutter/material.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:your_app/widgets/your_widget.dart';  // 替换为你的 widget 文件路径

class MyWidgetBook extends WidgetBook {
  @override
  List<Story> storiesOf(String path) {
    return [
      if (path == '/') ...[
        Story(
          name: 'Your Widget',
          builder: (_) => YourWidget(),  // 替换为你的 widget 类
        ),
      ],
      // 你可以根据需要添加更多的 stories
    ];
  }
}

4. 运行 WidgetBook

lib/main.dart 文件中,使用生成的 widgetbook.dart 文件来运行 WidgetBook:

import 'package:flutter/material.dart';
import 'package:widgetbook/widgetbook.dart';
import 'widgetbook.dart';  // 导入生成的 widgetbook 文件

void main() {
  runApp(
    WidgetbookApp(
      book: MyWidgetBook(),
      // 如果你希望仅在开发模式下运行 WidgetBook,可以使用 kDebugMode
      // if (kDebugMode) WidgetbookApp(...) else MyApp(),
    ),
  );
}

5. 启动应用

现在,你可以运行你的 Flutter 应用:

flutter run

应用启动后,你应该会看到一个界面,列出了所有在 widgetbook.dart 文件中定义的 widget。你可以点击任何一个 widget 来预览它。

总结

通过上述步骤,你可以使用 widgetbook_generator 插件自动生成并预览 Flutter 界面。这种方法不仅提高了开发效率,还使得 widget 的预览和测试变得更加直观和方便。

回到顶部