Flutter UI组件库插件fluent_ui的使用

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

Flutter UI组件库插件fluent_ui的使用

简介

fluent_ui 是一个为Flutter应用程序提供Windows风格UI组件的插件。它基于微软官方的Fluent Design系统,旨在帮助开发者创建美观且符合Windows设计指南的应用程序。

安装

添加依赖

pubspec.yaml文件中添加fluent_ui依赖:

dependencies:
  fluent_ui: ^4.4.0

或者从GitHub仓库直接引用:

dependencies:
  fluent_ui:
    git: https://github.com/bdlukaa/fluent_ui.git

然后运行命令以安装包:

dart pub get

注意:建议使用Flutter稳定版来构建项目。

Badge

如果你的应用使用了此库,可以在项目的README.md或网站上添加以下徽章来展示:

<a title="Made with Fluent Design" href="https://github.com/bdlukaa/fluent_ui">
  <img src="https://img.shields.io/badge/fluent-design-blue?style=flat-square&color=gray&labelColor=0078D7"/>
</a>

自定义强调色(Accent Color)

默认情况下,强调色为蓝色(Colors.blue)。你可以通过以下方式自定义应用的强调色:

FluentThemeData(
  accentColor: Colors.red, // 替换为你想要的颜色
)

若要使用系统的强调色,可以借助system_theme插件:

import 'package:system_theme/system_theme.dart';

FluentThemeData(
  accentColor: SystemTheme.accentColor.accent.toAccentColor(),
)

示例代码

下面是一个完整的示例demo,展示了如何创建一个简单的Flutter应用,并集成fluent_ui来实现Windows风格的界面。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FluentApp(
      title: 'Flutter Demo',
      theme: ThemeData.light(),
      darkTheme: ThemeData.dark(),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return NavigationView(
      appBar: NavigationAppBar(
        title: Text(widget.title),
      ),
      pane: NavigationPane(
        selected: 0,
        items: [
          PaneItem(
            icon: Icon(FluentIcons.home),
            title: Text('Home'),
            body: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text(
                    'You have pushed the button this many times:',
                  ),
                  Text(
                    '$_counter',
                    style: TextStyle(fontSize: 24),
                  ),
                ],
              ),
            ),
          ),
          PaneItem(
            icon: Icon(FluentIcons.settings),
            title: Text('Settings'),
            body: Center(
              child: Text('Settings Page'),
            ),
          ),
        ],
      ),
    );
  }
}

以上代码创建了一个包含两个页面(主页和设置页)的简单应用。每个页面都有自己的内容区域,并且可以通过左侧导航栏进行切换。此外,还展示了如何使用NavigationViewNavigationPanefluent_ui特有的组件来构建更贴近Windows风格的应用界面。

国际化支持

fluent_ui已经内置了对多种语言的支持,包括但不限于阿拉伯语、中文(简体/繁体)、英语、法语、德语、日语、韩语等。如果需要添加新的语言支持,可以参考贡献新本地化部分。

贡献与维护

fluent_ui是一个开源项目,欢迎所有有兴趣的朋友参与到它的开发中来。你可以通过提交问题报告或拉取请求的方式来帮助改进这个库。更多详情请访问Github仓库


希望这篇帖子能够帮助你更好地理解和使用fluent_ui插件!如果有任何疑问或遇到问题,欢迎随时提问。


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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用fluent_ui插件的示例代码。fluent_ui是一个受Microsoft Fluent Design启发的UI组件库,它提供了一系列现代化的UI组件。

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

dependencies:
  flutter:
    sdk: flutter
  fluent_ui: ^x.y.z  # 替换为最新版本号

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

接下来是一个简单的示例代码,展示如何使用fluent_ui中的一些组件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FluentApp(
      theme: FluentThemeData(
        brightness: Brightness.light,
        primaryColor: FluentColors.themePrimary,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FluentScaffold(
      appBar: FluentAppBar(
        title: Text('Fluent UI Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            FluentButton(
              child: Text('Primary Button'),
              onPressed: () {
                // 按钮点击事件
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Primary Button Clicked')),
                );
              },
              buttonStyle: FluentButtonStyle.primary,
            ),
            SizedBox(height: 16),
            FluentTextField(
              label: 'Username',
              placeholder: 'Enter your username',
            ),
            SizedBox(height: 16),
            FluentComboBox(
              label: 'Select an option',
              options: ['Option 1', 'Option 2', 'Option 3'],
              onChanged: (value) {
                // 选项变化事件
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Selected: $value')),
                );
              },
            ),
            SizedBox(height: 16),
            FluentToggleSwitch(
              label: 'Toggle Switch',
              onChanged: (value) {
                // 开关变化事件
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Switch is ${value ? 'On' : 'Off'}')),
                );
              },
            ),
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 依赖项:在pubspec.yaml中添加fluent_ui依赖项。
  2. 应用入口MyApp类扩展自StatelessWidget,并使用FluentApp作为根组件。
  3. 主题:使用FluentThemeData设置主题,包括亮度和主颜色。
  4. 主页面MyHomePage类使用FluentScaffold来构建页面布局,包括一个FluentAppBar和主体内容。
  5. 组件
    • FluentButton:一个带有点击事件的按钮。
    • FluentTextField:一个文本输入框。
    • FluentComboBox:一个下拉选择框。
    • FluentToggleSwitch:一个开关组件。

通过这些组件,你可以快速构建出具有Fluent Design风格的UI界面。注意,实际使用时需要确保fluent_ui的版本与Flutter版本兼容,并根据需要调整UI细节。

回到顶部