Flutter UI组件与样式调试插件dashbook的使用

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

Flutter UI组件与样式调试插件dashbook的使用

Dashbook 是一个为Flutter开发的UI开发工具,它既作为项目小部件的开发环境,也作为应用程序中常见小部件的展示平台。Dashbook深受Storybook库的启发,因此对于已经使用过Storybook的人来说,使用Dashbook应该非常容易上手。

dashbook

如何使用

添加依赖

首先,在pubspec.yaml文件中添加dashbook依赖:

flutter pub add dashbook

创建Dashbook实例

一个Dashbook实例包含了一系列应用的小部件(Stories)及其变体(Chapters)。下面是一个简单的例子:

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

void main() {
  final dashbook = Dashbook();

  // Adds the Text widget stories
  dashbook
      .storiesOf('Text')
      .decorator(CenterDecorator())
      .add('default', (ctx) {
        return Container(width: 300, child: Text(
          ctx.textProperty("text", "Text Example"),
          textAlign: ctx.listProperty(
              "text align",
              TextAlign.center,
              TextAlign.values,
          ),
          textDirection: ctx.listProperty(
              "text direction",
              TextDirection.rtl,
              TextDirection.values,
          ),
          style: TextStyle(
              fontWeight: ctx.listProperty(
                  "font weight",
                  FontWeight.normal,
                  FontWeight.values,
              ),
              fontStyle: ctx.listProperty(
                  "font style",
                  FontStyle.normal,
                  FontStyle.values,
              ),
              fontSize: ctx.numberProperty("font size", 20)),
        ));
      });

  dashbook
      .storiesOf('RaisedButton')
      .decorator(CenterDecorator())
      .add('default', (ctx) => ElevatedButton(child: Text('Ok'), onPressed: () {}));

  runApp(dashbook);
}

注意: 在新的Flutter版本中,RaisedButton已经被弃用,推荐使用ElevatedButton

Actions

Dashbook还提供了一种从其UI调用方法的简单方式,这些回调可以用于需要用户交互的更复杂的示例。 例如,Dialog并不是直接渲染在页面上的东西,而是显示在一个动作之后。以下代码展示了如何在Dashbook中实现一个CustomDialog小部件:

final dashbook = Dashbook();

dashbook
  .storiesOf('CustomDialog')
  .add('default', (ctx) {
    ctx.action('Open dialog', (context) {
      showDialog(
        context: context,
        builder: (_) => CustomDialog(),
      );
    });

    return SizedBox();
  });

示例信息

为了帮助用户更好地理解如何与示例进行互动,可以为示例添加一些指导性文本信息。这可以通过add方法中的info参数来实现:

final dashbook = Dashbook();

dashbook
  .storiesOf('CustomDialog')
  .add('default',
    (ctx) {
      ctx.action('Open dialog', (context) {
        showDialog(
          context: context,
          builder: (_) => CustomDialog(),
        );
      });

      return SizedBox();
    },
    info: 'Use the actions button on the side to show the dialog.',
  );

如果希望直接在预览区域显示信息,可以在add方法中设置pinInfo参数为true

预览区域

默认情况下,Dashbook会提供整个屏幕区域用于预览。你可以通过设置usePreviewSafeArea参数来改变这种行为,确保控件图标不会覆盖在示例之上。

主题管理

Dashbook提供了三种方式来更改主题:

  • 单个主题:使用默认构造函数,并通过可选的theme参数设置主题。
  • 双主题:当你的应用程序有两个主题时,可以使用dualTheme构造函数。
  • 多主题:当应用程序有多个主题时,可以使用multiTheme构造函数。

可见性控制属性

对于某些复杂的小部件,可能有很多字段,导致属性列表很长,难以理解。通过可见性控制属性API,可以根据其他属性的值来决定某个属性是否显示。

结构建议

虽然没有必须遵循的结构,但推荐的方式是:

  • 在项目的根源目录下创建一个名为main_dashbook.dart的文件(例如lib/main_dashbook.dart)。
  • 在该文件中创建Dashbook实例,并在最后调用runApp方法。
  • 使用命令flutter run -t lib/main_dashbook.dart运行它。

完整示例

这里给出一个完整的示例,包括了文本、按钮、对话框等元素,以及主题切换的功能:

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

void main() {
  final dashbook = Dashbook.dualTheme(
    light: ThemeData.light(),
    dark: ThemeData.dark(),
    title: 'Dashbook Example',
    autoPinStoriesOnLargeScreen: true,
  );

  // Adding a simple text story with multiple properties
  dashbook.storiesOf('Text Widget')
      .decorator(CenterDecorator())
      .add('Default', (ctx) {
    return Container(
      width: 300,
      child: Text(
        ctx.textProperty("text", "Hello World"),
        textAlign: ctx.listProperty("text align", TextAlign.left, TextAlign.values),
        textDirection: ctx.listProperty("text direction", TextDirection.ltr, TextDirection.values),
        style: TextStyle(
          fontWeight: ctx.listProperty("font weight", FontWeight.normal, FontWeight.values),
          fontStyle: ctx.listProperty("font style", FontStyle.normal, FontStyle.values),
          fontSize: ctx.numberProperty("font size", 20),
        ),
      ),
    );
  }, info: 'This is an example of how to use the Text widget in Dashbook.');

  // Adding a button story
  dashbook.storiesOf('ElevatedButton')
      .decorator(CenterDecorator())
      .add('Default', (ctx) => ElevatedButton(child: Text('Click me'), onPressed: () {}));

  // Adding a dialog story with action
  dashbook.storiesOf('CustomDialog')
      .add('Default', (ctx) {
    ctx.action('Open dialog', (context) {
      showDialog(
        context: context,
        builder: (_) => AlertDialog(
          title: Text('Alert'),
          content: Text('This is a custom dialog.'),
          actions: [
            TextButton(
              child: Text('OK'),
              onPressed: () => Navigator.of(context).pop(),
            )
          ],
        ),
      );
    });

    return SizedBox();
  }, info: 'Use the actions button on the side to open the dialog.', pinInfo: true);

  runApp(dashbook);
}

这个示例涵盖了基本的文本、按钮和对话框的创建,并且展示了如何使用Dashbook的各种特性来增强开发体验。


更多关于Flutter UI组件与样式调试插件dashbook的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter UI组件与样式调试插件dashbook的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于Flutter UI组件与样式调试插件Dashbook的使用,下面是一个简单的代码案例和配置指南,帮助你快速上手。Dashbook 是一个用于 Flutter 应用的 UI 组件和样式调试工具,它允许你在应用的运行时实时查看和修改 UI。

安装 Dashbook

首先,你需要在你的 Flutter 项目中安装 Dashbook。你可以通过在你的 pubspec.yaml 文件中添加以下依赖来实现:

dependencies:
  flutter:
    sdk: flutter
  dashbook: ^latest_version  # 请替换为实际的最新版本号

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

配置 Dashbook

接下来,你需要在你的 Flutter 应用中配置 Dashbook。通常,你会在一个单独的文件中配置 Dashbook,例如 main_dashbook.dart

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

// 一个简单的 Widget 用于展示
class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Hello, Dashbook!'),
    );
  }
}

void main() {
  // 配置 Dashbook
  Dashbook.forRoot(
    children: [
      DashbookItem(
        id: 'my-widget',
        title: 'My Widget',
        builder: (context) => MyWidget(),
      ),
      // 你可以在这里添加更多的 DashbookItem
    ],
  );

  // 运行你的 Flutter 应用
  runApp(MaterialApp(
    home: Dashbook.toWidget(),
  ));
}

在这个例子中,我们创建了一个简单的 MyWidget,然后在 main 函数中配置了 Dashbook,将 MyWidget 添加为一个 DashbookItem。Dashbook.forRoot 方法用于初始化 Dashbook,并传入一个包含多个 DashbookItem 的列表,每个 DashbookItem 代表一个可以在 Dashbook 中查看和调试的 Widget。

使用 Dashbook

配置完成后,你可以运行你的 Flutter 应用。当你启动应用时,你应该能够看到一个 Dashbook 界面,其中包含了你在 Dashbook.forRoot 方法中配置的所有 Widget。你可以点击每个 Widget 的标题来查看和调试它。

实时调试

Dashbook 的一个强大功能是实时调试。虽然在这个简单的例子中我们并没有展示如何实时调试样式或属性,但 Dashbook 允许你通过编写更复杂的 Widget 和使用 Dashbook 提供的 API 来实现这一点。

例如,你可以创建一个包含多个属性的复杂 Widget,并使用 Dashbook 的 withKnobs 方法来允许你在运行时修改这些属性。

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

class ComplexWidget extends StatelessWidget {
  final Color textColor;
  final double fontSize;

  ComplexWidget({this.textColor = Colors.black, this.fontSize = 24.0});

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text(
        'Hello, Dashbook with Knobs!',
        style: TextStyle(color: textColor, fontSize: fontSize),
      ),
    );
  }
}

void main() {
  Dashbook.forRoot(
    children: [
      DashbookItem(
        id: 'complex-widget',
        title: 'Complex Widget',
        builder: (context) => withKnobs<ComplexWidget>(
          knobs: [
            Knob.color('Text Color', Colors.black),
            Knob.double('Font Size', 24.0, min: 12.0, max: 48.0, step: 1.0),
          ],
          builder: (context, {textColor, fontSize}) => ComplexWidget(
            textColor: textColor,
            fontSize: fontSize,
          ),
        ),
      ),
    ],
  );

  runApp(MaterialApp(
    home: Dashbook.toWidget(),
  ));
}

在这个例子中,我们创建了一个 ComplexWidget,它有两个属性:textColorfontSize。我们使用 withKnobs 方法来允许在 Dashbook 中实时修改这些属性。Knob.colorKnob.double 用于创建颜色和双精度浮点数的控制旋钮。

通过这些步骤,你就可以在你的 Flutter 应用中使用 Dashbook 来调试 UI 组件和样式了。Dashbook 提供了许多其他功能和 API,你可以查阅其官方文档以获取更多信息。

回到顶部