Flutter UI组件库插件flutter_ukit的使用

Flutter UI组件库插件flutter_ukit的使用

Flutter UKit

Flutter UKit 是一个包含可重用且易于使用的UI组件、模板、样式、资源和其他有用的数字资产的大集合,可用于创建用户界面设计。

开始使用

本项目是一个Flutter插件包的起点,它包括针对Android和/或iOS的平台特定实现代码。

对于开始Flutter开发的帮助,可以查看在线文档,其中提供了教程、示例、移动开发指南和完整的API参考。

可用功能

以下是当前可用的功能列表:

功能 状态
字体样式 ✔️
容器 ✔️
微光加载 ✔️
按钮 ✔️
对话框 ✔️
表单控件 ✔️
复选框 ✔️
单选按钮 ✔️
选择器 ✔️
下拉选项 ✔️
动画 🚧

更多示例

请查看example文件夹以获取更多代码示例。


示例代码

以下是一个完整的示例代码,展示了如何使用Flutter UKit来构建一个简单的用户界面。

import 'package:flutter/material.dart';
import 'screen/animation_screen.dart';
import 'screen/dropdown_screen.dart';
import 'screen/picker_screen.dart';
import 'screen/checkbox_screen.dart';
import 'screen/radio_button_screen.dart';
import 'screen/button_screen.dart';
import 'screen/container_screen.dart';
import 'screen/dialog_screen.dart';
import 'screen/form_screen.dart';
import 'screen/shimmer_screen.dart';
import 'screen/typography_screen.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter UI Kit',
      theme: ThemeData(
        useMaterial3: false,
      ),
      home: const HomeScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Flutter UKit'),
      ),
      drawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero,
          children: [
            const UserAccountsDrawerHeader(
              accountName: Text(
                'Flutter UKit',
              ),
              accountEmail: Text(
                'version 0.0.2',
              ),
              currentAccountPicture: CircleAvatar(
                child: FlutterLogo(size: 42.0),
              ),
            ),
            ExpansionTile(
              title: const Text("Contents"),
              leading: const Icon(Icons.content_copy),
              childrenPadding: const EdgeInsets.only(left: 60),
              children: [
                ListTile(
                  title: const Text('字体样式'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const TypographyScreen(),
                      ),
                    );
                  },
                ),
                ListTile(
                  title: const Text('容器'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const ContainerScreen(),
                      ),
                    );
                  },
                ),
                ListTile(
                  title: const Text('微光加载'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const ShimmerScreen(),
                      ),
                    );
                  },
                ),
                ListTile(
                  title: const Text('动画'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const AnimationScreen(),
                      ),
                    );
                  },
                ),
              ],
            ),
            ExpansionTile(
              title: const Text("组件"),
              leading: const Icon(Icons.widgets),
              childrenPadding: const EdgeInsets.only(left: 60),
              children: [
                ListTile(
                  title: const Text('按钮'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const ButtonScreen(),
                      ),
                    );
                  },
                ),
                ListTile(
                  title: const Text('对话框'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const DialogScreen(),
                      ),
                    );
                  },
                ),
              ],
            ),
            ExpansionTile(
              title: const Text("表单"),
              leading: const Icon(Icons.layers_outlined),
              childrenPadding: const EdgeInsets.only(left: 60),
              children: [
                ListTile(
                  title: const Text('表单控件'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const FormScreen(),
                      ),
                    );
                  },
                ),
                ListTile(
                  title: const Text('下拉选项'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const DropdownScreen(),
                      ),
                    );
                  },
                ),
                ListTile(
                  title: const Text('复选框'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const CheckboxScreen(),
                      ),
                    );
                  },
                ),
                ListTile(
                  title: const Text('单选按钮'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const RadioButtonScreen(),
                      ),
                    );
                  },
                ),
                ListTile(
                  title: const Text('选择器'),
                  trailing: const Icon(Icons.arrow_forward_ios, size: 18),
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const PickerScreen(),
                      ),
                    );
                  },
                ),
              ],
            ),
          ],
        ),
      ),
      body: Center(
        child: Column(
          children: [
            const Padding(
              padding: EdgeInsets.all(30.0),
              child: Text(
                'Flutter UKit 是一个包含可重用且易于使用的UI组件、模板、样式、资源和其他有用的数字资产的大集合,可用于创建用户界面设计。',
                style: TextStyle(fontSize: 16.0),
                textAlign: TextAlign.center,
              ),
            ),
            Container(
              margin: const EdgeInsets.symmetric(horizontal: 20),
              child: Table(
                defaultVerticalAlignment: TableCellVerticalAlignment.middle,
                border: TableBorder.all(
                  color: Colors.black,
                  style: BorderStyle.solid,
                  width: 1,
                ),
                children: const [
                  TableRow(
                    decoration: BoxDecoration(color: Colors.blue),
                    children: [
                      Text(
                        '功能',
                        style: TextStyle(
                            fontWeight: FontWeight.bold, color: Colors.white),
                        textAlign: TextAlign.center,
                      ),
                      Text(
                        '状态',
                        style: TextStyle(
                            fontWeight: FontWeight.bold, color: Colors.white),
                        textAlign: TextAlign.center,
                      ),
                    ],
                  ),
                  // TableRow(children: [
                  //   Column(children: [Text('Javatpoint')]),
                  //   Column(children: [Text('Flutter')]),
                  //   Column(children: [Text('5*')]),
                  // ]),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


flutter_ukit 是一个 Flutter UI 组件库插件,提供了丰富的 UI 组件,可以帮助开发者快速构建美观的应用程序。以下是如何使用 flutter_ukit 的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_ukit: ^1.0.0  # 请使用最新版本

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

2. 导入包

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

import 'package:flutter_ukit/flutter_ukit.dart';

3. 使用组件

flutter_ukit 提供了多种 UI 组件,以下是一些常用的组件及其使用方法:

3.1 UKitButton

UKitButton 是一个自定义按钮组件,支持多种样式。

UKitButton(
  onPressed: () {
    print('Button Pressed');
  },
  text: 'Click Me',
  color: Colors.blue,
  textColor: Colors.white,
)

3.2 UKitTextField

UKitTextField 是一个自定义的文本输入框组件。

UKitTextField(
  hintText: 'Enter your text',
  onChanged: (value) {
    print('Text changed: $value');
  },
)

3.3 UKitCard

UKitCard 是一个自定义卡片组件,支持阴影和圆角。

UKitCard(
  child: Text('This is a card'),
  elevation: 5,
  borderRadius: BorderRadius.circular(10),
)

3.4 UKitAlertDialog

UKitAlertDialog 是一个自定义的对话框组件。

UKitAlertDialog(
  title: 'Alert',
  content: 'This is an alert dialog.',
  actions: [
    UKitButton(
      onPressed: () {
        Navigator.pop(context);
      },
      text: 'OK',
    ),
  ],
)

3.5 UKitProgressIndicator

UKitProgressIndicator 是一个自定义的进度指示器。

UKitProgressIndicator(
  color: Colors.blue,
  size: 50,
)

4. 自定义主题

flutter_ukit 允许你自定义主题来统一应用的外观。

UKitTheme(
  data: UKitThemeData(
    primaryColor: Colors.blue,
    accentColor: Colors.green,
    buttonTheme: UKitButtonThemeData(
      borderRadius: BorderRadius.circular(8),
      textColor: Colors.white,
    ),
  ),
  child: YourApp(),
)

5. 完整示例

以下是一个完整的示例,展示了如何使用 flutter_ukit 中的一些组件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return UKitTheme(
      data: UKitThemeData(
        primaryColor: Colors.blue,
        accentColor: Colors.green,
        buttonTheme: UKitButtonThemeData(
          borderRadius: BorderRadius.circular(8),
          textColor: Colors.white,
        ),
      ),
      child: MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: Text('Flutter UKit Demo'),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                UKitButton(
                  onPressed: () {
                    print('Button Pressed');
                  },
                  text: 'Click Me',
                ),
                SizedBox(height: 20),
                UKitTextField(
                  hintText: 'Enter your text',
                  onChanged: (value) {
                    print('Text changed: $value');
                  },
                ),
                SizedBox(height: 20),
                UKitCard(
                  child: Text('This is a card'),
                  elevation: 5,
                  borderRadius: BorderRadius.circular(10),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
回到顶部