Flutter快速面板控制插件fastboard_flutter的使用

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

Flutter快速面板控制插件fastboard_flutter的使用

快速入门

Agora Fastboard SDK 是由 Agora 推出的一款用于帮助开发者快速构建白板应用程序的新一代白板 SDK。它简化了白板 SDK 的 API 并添加了 UI 实现。这些改进使你只需几行代码即可加入房间,并立即体验使用各种丰富的编辑工具进行实时互动协作。

主要特性包括:

  • 低成本
  • 针对场景优化
  • 可配置性

前提条件

在开始之前,请确保满足以下条件:

开始使用

在你的 Flutter 项目中添加依赖项:

dependencies:
  fastboard_flutter: ^0.1.2

使用说明

你可以通过克隆此仓库并运行示例来开始使用。主要的示例代码位于 quick_start.dartcustom_layout.dart

使用 FastRoomView

首先,在你的 Flutter 项目中嵌入 FastRoomView 组件。

[@override](/user/override)
Widget build(BuildContext context) {
  return FastRoomView(
    fastRoomOptions: FastRoomOptions(
      appId: APP_ID,
      uuid: ROOM_UUID,
      token: ROOM_TOKEN,
      uid: UNIQUE_CLIENT_ID,
      writable: true,
      fastRegion: FastRegion.cn_hz,
    ),
  );
}

切换暗模式

Fastboard 提供了一套内置的暗模式配置,你可以通过配置 FastRoomView.useDarkTheme 来切换暗模式和亮模式。

[@override](/user/override)
Widget build(BuildContext context) {
  return FastRoomView(
    fastRoomOptions: FastRoomOptions(
      appId: APP_ID,
      uuid: ROOM_UUID,
      token: ROOM_TOKEN,
      uid: UNIQUE_CLIENT_ID,
      writable: true,
      fastRegion: FastRegion.cn_hz,
    ),
    useDarkTheme: true,
  );
}

你也可以通过 FastRoomView.themeFastRoomView.darkTheme 来更改内置控件的颜色。

[@override](/user/override)
Widget build(BuildContext context) {
  return FastRoomView(
    fastRoomOptions: FastRoomOptions(
      appId: APP_ID,
      uuid: ROOM_UUID,
      token: ROOM_TOKEN,
      uid: UNIQUE_CLIENT_ID,
      writable: true,
      fastRegion: FastRegion.cn_hz,
    ),
    theme: FastThemeData.light().copyWith(mainColor: Color(0xFF00BCD4)),
    darkTheme: FastThemeData.dark().copyWith(mainColor: Color(0xFF0097A7)),
    useDarkTheme: true,
  );
}

自定义布局

你可以隐藏或显示内置组件,或者自定义组件的布局。

[@override](/user/override)
Widget build(BuildContext context) {
  return FastRoomView(
    fastRoomOptions: FastRoomOptions(
      appId: APP_ID,
      uuid: ROOM_UUID,
      token: ROOM_TOKEN,
      uid: UNIQUE_CLIENT_ID,
      writable: true,
      fastRegion: FastRegion.cn_hz,
    ),
    builder: customBuilder,
  );
}

Widget customBuilder(BuildContext context, FastRoomController controller) {
  return Stack(
    alignment: Alignment.center,
    children: [
      FastOverlayHandlerView(controller),
      Positioned(
        child: FastPageIndicator(controller),
        bottom: FastGap.gap_3,
        right: FastGap.gap_3,
      ),
      FastToolBoxExpand(controller),
      FastStateHandlerView(controller),
    ],
  );
}

配置工具箱项

你可以通过 FastUiSettings.toolboxItems 来配置工具箱中的工具。

void main() {
  FastUiSettings.toolboxItems = [
    ToolboxItem(appliances: [FastAppliance.clicker]),
    ToolboxItem(appliances: [FastAppliance.selector]),
    ToolboxItem(appliances: [FastAppliance.pencil]),
    ToolboxItem(appliances: [FastAppliance.eraser]),
    ToolboxItem(appliances: [
      FastAppliance.rectangle,
      FastAppliance.ellipse,
      FastAppliance.straight,
      FastAppliance.arrow,
      FastAppliance.pentagram,
      FastAppliance.rhombus,
      FastAppliance.triangle,
      FastAppliance.balloon,
    ]),
    
    // 移除清除工具
    // ToolboxItem(appliances: [FastAppliance.clear]),
  ];
  runApp(const MyApp());
}

示例代码

以下是完整的示例代码:

import 'package:flutter/material.dart';

import 'custom_layout.dart';
import 'page.dart';
import 'quick_start.dart';

final List<FastExamplePage> _allPages = [
  const QuickStartPage(),
  const CustomLayoutPage(),
];

void main() {
  const bool isProduction = bool.fromEnvironment('dart.vm.product');
  if (isProduction) {
    debugPrint = (String? message, {int? wrapWidth}) => null;
  }
  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: const Text('FFastboard'),
          ),
          body: ListView.builder(
            itemCount: _allPages.length,
            itemBuilder: (appContext, index) => ListTile(
              leading: _allPages[index].leading,
              title: Text(_allPages[index].title),
              onTap: () => _pushPage(appContext, _allPages[index]),
            ),
          )
          // body: _allPages[0],
          ),
    );
  }

  void _pushPage(BuildContext context, FastExamplePage page) {
    Navigator.of(context).push(MaterialPageRoute<void>(
        builder: (_) => Scaffold(
              body: page,
              // 防止键盘出现时调整大小
              resizeToAvoidBottomInset: false,
            )));
  }
}

更多关于Flutter快速面板控制插件fastboard_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter快速面板控制插件fastboard_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用fastboard_flutter插件的示例代码案例。这个插件允许你快速创建和控制面板。为了演示起见,假设你已经有一个Flutter项目,并且已经添加了fastboard_flutter依赖。

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

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

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

接下来,在你的Flutter项目中,你可以按照以下步骤使用fastboard_flutter插件:

  1. 导入包
import 'package:flutter/material.dart';
import 'package:fastboard_flutter/fastboard_flutter.dart';
  1. 定义Fastboard面板

在你的主页面或需要显示面板的地方定义Fastboard组件。这里是一个简单的例子:

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Fastboard Flutter Example'),
        ),
        body: Center(
          child: FastboardExample(),
        ),
      ),
    );
  }
}

class FastboardExample extends StatefulWidget {
  @override
  _FastboardExampleState createState() => _FastboardExampleState();
}

class _FastboardExampleState extends State<FastboardExample> {
  late FastboardController _controller;

  @override
  void initState() {
    super.initState();
    _controller = FastboardController();
    // 添加一些面板项作为示例
    _controller.addItem(
      FastboardItem(
        id: 'button1',
        type: FastboardItemType.button,
        title: 'Button 1',
        onTap: () {
          print('Button 1 tapped');
        },
      ),
    );
    _controller.addItem(
      FastboardItem(
        id: 'slider1',
        type: FastboardItemType.slider,
        title: 'Slider 1',
        initialValue: 50.0,
        minValue: 0.0,
        maxValue: 100.0,
        onChanged: (double value) {
          print('Slider 1 value changed to $value');
        },
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Fastboard(
      controller: _controller,
      header: Container(
        height: 50,
        color: Colors.blue,
        child: Center(
          child: Text(
            'Fastboard Panel',
            style: TextStyle(color: Colors.white),
          ),
        ),
      ),
      footer: Container(
        height: 50,
        color: Colors.grey[300],
        child: Center(
          child: ElevatedButton(
            onPressed: () {
              // 隐藏面板
              _controller.toggleVisibility();
            },
            child: Text('Toggle Panel'),
          ),
        ),
      ),
    );
  }
}
  1. 运行应用

确保你的开发环境已经正确配置,然后运行应用。你应该会看到一个包含按钮和滑块的快速面板,点击按钮和滑动滑块会在控制台输出相应的信息。

请注意,fastboard_flutter插件的具体API可能会有所不同,具体取决于插件的版本。因此,在实际使用时,请参考插件的官方文档以获取最新和最准确的API信息。

此外,FastboardControllerFastboardItem等类的具体属性和方法可能会根据插件版本有所不同,因此上述代码仅为示例,实际使用时请根据插件文档进行调整。

回到顶部