Flutter设计系统插件varx_design_system的使用

Flutter设计系统插件varx_design_system的使用

varx_design_system

varx_design_system 是一个用于简化 Flutter 应用开发的设计系统插件。它提供了一系列预定义的 UI 组件,使得开发者可以更快速地构建美观且一致的应用界面。

安装

pubspec.yaml 文件中添加依赖:

dependencies:
  varx_design_system: ^版本号

然后运行 flutter pub get 来安装该插件。

使用示例

以下是一个完整的示例,展示了如何使用 varx_design_system 插件来构建一个简单的应用。

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const VarxApp(
      primary: Color(0xFF0058CA), // 主色调
      home: MyHomePage(title: 'Varx Design System'), // 主页面
    );
  }
}

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

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool isLoading = false;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(20),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            // 头像组件
            Row(
              children: const [
                VarxAvatar(
                  name: 'Muhammad Noer',
                ),
                VarxAvatar(
                  name: 'Muhammad Noer',
                  backgroundImage: NetworkImage(
                      'https://img.freepik.com/free-vector/3d-boy-cartoon-character-head-with-headphones-social-network-profile-vector-illustration_480270-393.jpg'),
                ),
              ],
            ),
            // 按钮组件
            VarxButton(
              onTap: () {
                setState(() {
                  isLoading = !isLoading;
                });
              },
              prefixIcon: const Icon(
                Icons.add,
                size: 18,
              ),
              fullWidth: false,
              label: 'Add',
              isLoading: isLoading,
            ),
            const SizedBox(height: 12),
            VarxButton(
              onTap: () {
                setState(() {
                  isLoading = !isLoading;
                });
              },
              label: 'Add',
              isLoading: isLoading,
            ),
            const SizedBox(height: 12),
            VarxButton(
              type: VarxButtonType.secondary,
              onTap: () {
                setState(() {
                  isLoading = !isLoading;
                });
              },
              fullWidth: true,
              prefixIconData: Icons.ac_unit,
              suffixIconData: Icons.add,
              label: 'Add',
              isLoading: isLoading,
            ),
            const SizedBox(height: 12),
            VarxButton(
              type: VarxButtonType.text,
              onTap: () {
                setState(() {
                  isLoading = !isLoading;
                });
              },
              prefixIcon: const Icon(Icons.ac_unit),
              suffixIcon: const Icon(Icons.add),
              fullWidth: true,
              label: 'Add',
              isLoading: isLoading,
            ),
            const SizedBox(height: 12),
            // 图标按钮
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                VarxIconButton(
                  onTap: () {},
                  iconData: Icons.camera_alt_outlined,
                ),
                VarxIconButton(
                  onTap: () {},
                  iconData: Icons.image,
                  borderRadius: BorderRadius.circular(8),
                  backgroundColor:
                      Theme.of(context).colorScheme.tertiaryContainer,
                  iconColor: Theme.of(context).colorScheme.onTertiaryContainer,
                ),
                VarxIconButton(
                  onTap: () {},
                  iconData: Icons.delete,
                  borderRadius: BorderRadius.circular(8),
                  backgroundColor: Theme.of(context).colorScheme.errorContainer,
                  iconColor: Theme.of(context).colorScheme.error,
                ),
              ],
            ),
            const SizedBox(height: 12),
            // 文本输入框
            const VarxTextField(
              label: 'Name',
              isRequired: true,
              hintText: 'Enter Name',
              errorText: 'Isi dong!!!!',
              labelPadding: EdgeInsets.only(left: 18),
            ),
            const SizedBox(height: 12),
            const VarxTextField(
              label: 'Name',
              hintText: 'Enter Name',
              enabled: false,
            ),
            const VarxTextField(
              label: 'Name',
              hintText: 'Enter Name',
            ),
            const SizedBox(height: 12),
            // 标签按钮
            VarxLabelButton(
              onTap: () {},
              buttonText: 'Select File',
            ),
            // 标签值展示
            LabelValue(
              label: 'Name',
              value: 'Theresa Weeb',
              valueStyle: Theme.of(context).textTheme.bodyLarge?.copyWith(
                    fontWeight: FontWeight.bold,
                  ),
            ),
            const LabelValue(
              label: 'CID',
              value: '0101223059',
            ),
            // 可展开的列表项
            VarxExpansionTile(
              title: 'Identity',
              children: [
                LabelValue(
                  label: 'Name',
                  value: 'Theresa Weeb',
                  valueStyle: Theme.of(context).textTheme.bodyLarge?.copyWith(
                        fontWeight: FontWeight.bold,
                      ),
                ),
                const LabelValue(
                  label: 'CID',
                  value: '0101223059',
                ),
                const LabelValue(
                  label: 'Alias Name',
                  value: '-',
                ),
              ],
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {},
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

更多关于Flutter设计系统插件varx_design_system的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


varx_design_system 是一个用于 Flutter 的设计系统插件,它提供了一套预定义的组件、样式和工具,帮助开发者快速构建具有一致性和美观性的应用程序。以下是使用 varx_design_system 的基本步骤和示例。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  varx_design_system: ^1.0.0  # 请根据实际版本号进行替换

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

2. 导入包

在需要使用 varx_design_system 的 Dart 文件中导入包:

import 'package:varx_design_system/varx_design_system.dart';

3. 使用组件

varx_design_system 提供了多种预定义的组件,例如按钮、文本、卡片等。你可以直接使用这些组件来构建 UI。

示例:使用按钮组件

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('VarX Design System Example'),
      ),
      body: Center(
        child: VarxButton(
          onPressed: () {
            print('Button Pressed');
          },
          text: 'Click Me',
        ),
      ),
    );
  }
}

4. 自定义主题

varx_design_system 支持自定义主题,你可以通过 VarxTheme 来定义应用的全局样式。

示例:自定义主题

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'VarX Design System Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: VarxTheme(
        data: VarxThemeData(
          primaryColor: Colors.blue,
          accentColor: Colors.orange,
          textTheme: VarxTextTheme(
            headline1: TextStyle(fontSize: 32, fontWeight: FontWeight.bold),
            bodyText1: TextStyle(fontSize: 16, color: Colors.black87),
          ),
        ),
        child: MyHomePage(),
      ),
    );
  }
}

5. 使用样式

varx_design_system 还提供了预定义的样式,如文本样式、颜色等,你可以直接在应用中使用。

示例:使用文本样式

Text(
  'Hello, VarX Design System!',
  style: VarxTextTheme.headline1,
)

6. 响应式设计

varx_design_system 支持响应式设计,可以根据屏幕大小自动调整布局。

示例:响应式布局

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

class ResponsiveLayout extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return VarxResponsiveBuilder(
      builder: (context, screenSize) {
        if (screenSize == VarxScreenSize.small) {
          return Text('Small Screen');
        } else if (screenSize == VarxScreenSize.medium) {
          return Text('Medium Screen');
        } else {
          return Text('Large Screen');
        }
      },
    );
  }
}
回到顶部