Flutter UI展示插件flutter_ui_presenter的使用

简介

flutter_ui_presenter 是一个用于在多个设备上展示 Flutter UI 的插件,支持通过 Web 或桌面平台进行展示。它非常适合用于开发阶段,可以快速预览不同页面的设计效果。


开始使用

1. 添加依赖

首先,在项目的 pubspec.yaml 文件中添加 flutter_ui_presenter 依赖:

dependencies:
  flutter_ui_presenter: ^0.1.0

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

flutter pub get
2. 创建模板页面

flutter_ui_presenter 提供了一个 UIPresenter 小部件,允许你定义不同的模板页面,并在界面上切换查看。每个模板页面都需要定义一个名称和构建函数。

以下是示例代码中定义的两个模板页面 Template1Template2

class Template1 extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Template1'),
      ),
      body: Center(
        child: FlutterLogo(), // 中心显示 Flutter Logo
      ),
    );
  }
}

class Template2 extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Template2'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            CircularProgressIndicator.adaptive(), // 进度指示器
            Switch.adaptive( // 开关控件
              value: true,
              onChanged: (value) {},
            ),
          ],
        ),
      ),
    );
  }
}
3. 配置 UIPresenter

接下来,在应用的主入口文件中配置 UIPresenter,并传入模板列表。每个模板包含名称和对应的构建函数。

import 'package:example/src/counter_page.dart'; // 引入计数页面
import 'package:example/src/scroll_page.dart'; // 引入滚动页面
import 'package:flutter/material.dart';
import 'package:flutter_ui_presenter/flutter_ui_presenter.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: UIPresenter(
        templates: [
          Template(
            name: 'Template 1', // 模板名称
            builder: (context) => Template1(), // 模板页面构建函数
          ),
          Template(
            name: 'Template 2',
            builder: (context) => Template2(),
          ),
          Template(
            name: 'Counter',
            builder: (context) => CounterPage(), // 自定义计数页面
          ),
          Template(
            name: 'Scroll',
            builder: (context) => ScrollPage(), // 自定义滚动页面
          ),
        ],
      ),
    );
  }
}
4. 查看效果

运行应用后,你会看到一个带有模板选择功能的界面。点击不同的模板名称即可预览其 UI 效果。


示例代码完整结构

以下为完整的示例代码,包括 main.dart 和模板页面的实现:

// main.dart
import 'package:example/src/counter_page.dart';
import 'package:example/src/scroll_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_ui_presenter/flutter_ui_presenter.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: UIPresenter(
        templates: [
          Template(
            name: 'Template 1',
            builder: (context) => Template1(),
          ),
          Template(
            name: 'Template 2',
            builder: (context) => Template2(),
          ),
          Template(
            name: 'Counter',
            builder: (context) => CounterPage(),
          ),
          Template(
            name: 'Scroll',
            builder: (context) => ScrollPage(),
          ),
        ],
      ),
    );
  }
}

// Template1 页面
class Template1 extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Template1'),
      ),
      body: Center(
        child: FlutterLogo(),
      ),
    );
  }
}

// Template2 页面
class Template2 extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Template2'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            CircularProgressIndicator.adaptive(),
            Switch.adaptive(
              value: true,
              onChanged: (value) {},
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter UI展示插件flutter_ui_presenter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter UI展示插件flutter_ui_presenter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_ui_presenter 是一个用于在 Flutter 应用中展示 UI 组件的插件。它可以帮助开发者快速预览和展示 UI 组件,特别适用于在开发过程中快速查看 UI 效果。以下是如何使用 flutter_ui_presenter 的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_ui_presenter: ^0.1.0  # 请使用最新版本

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

2. 导入包

在你的 Dart 文件中导入 flutter_ui_presenter 包:

import 'package:flutter_ui_presenter/flutter_ui_presenter.dart';

3. 使用 UIPresenter

UIPresenterflutter_ui_presenter 的核心组件,用于展示 UI 组件。你可以通过 UIPresenter 来包裹你想要展示的 UI 组件。

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter UI Presenter Example'),
        ),
        body: UIPresenter(
          child: Center(
            child: Text('Hello, Flutter UI Presenter!'),
          ),
        ),
      ),
    );
  }
}

4. 运行应用

运行你的 Flutter 应用,你将看到 UIPresenter 包裹的 UI 组件在屏幕上展示。

5. 自定义配置

UIPresenter 提供了一些可选的配置参数,你可以根据需要自定义展示效果。例如:

UIPresenter(
  backgroundColor: Colors.blue,
  padding: EdgeInsets.all(16.0),
  borderRadius: BorderRadius.circular(8.0),
  child: Center(
    child: Text('Customized Flutter UI Presenter!'),
  ),
)

6. 其他功能

flutter_ui_presenter 还提供了一些其他功能,例如支持手势操作、动画效果等。你可以查阅官方文档或源码来了解更多高级用法。

7. 示例代码

以下是一个完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter UI Presenter Example'),
        ),
        body: UIPresenter(
          backgroundColor: Colors.blue,
          padding: EdgeInsets.all(16.0),
          borderRadius: BorderRadius.circular(8.0),
          child: Center(
            child: Text('Hello, Flutter UI Presenter!'),
          ),
        ),
      ),
    );
  }
}
回到顶部