Flutter微信标签组件插件wx_chip的使用

Flutter微信标签组件插件wx_chip的使用

通过 wx_chip 插件,开发者可以轻松创建具有微信风格的标签组件。该插件允许用户自定义标签的样式,并支持 Material Design 和 iOS 风格的主题。以下是完整的使用说明和示例代码。


使用说明

安装插件

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

dependencies:
  wx_chip: ^最新版本号

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

flutter pub get

示例代码

以下是一个完整的示例代码,展示如何在 Flutter 应用程序中使用 wx_chip 插件。

示例代码

import 'package:flutter/material.dart';
import 'package:theme_patrol/theme_patrol.dart';
import 'package:wx_chip/wx_chip.dart';
import 'package:wx_text/wx_text.dart';
import 'theme_picker.dart';
import 'sample_appearance.dart';
import 'sample_appearance_mix.dart';
import 'sample_disabled.dart';
import 'sample_severity.dart';
import 'sample_compound.dart';
import 'sample_driven.dart';

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

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

  @override
  Widget build(BuildContext context) {
    // 使用 ThemePatrol 来管理主题
    return ThemePatrol(
      themes: {
        'm2': ThemeConfig.withMode(
          description: 'Material 2',
          light: ThemeData.light(useMaterial3: false),
          dark: ThemeData.dark(useMaterial3: false),
          extensionsBuilder: [
            (context) => WxChipThemeM2(context), // Material 2 风格
          ],
        ),
        'm3': ThemeConfig.withMode(
          description: 'Material 3',
          light: ThemeData.light(useMaterial3: true),
          dark: ThemeData.dark(useMaterial3: true),
          extensionsBuilder: [
            (context) => WxChipThemeM3(context), // Material 3 风格
          ],
        ),
        'ios': ThemeConfig.withMode(
          description: 'iOS',
          light: ThemeData.light(useMaterial3: false),
          dark: ThemeData.dark(useMaterial3: false),
          extensionsBuilder: [
            (context) => WxChipThemeIOS(context), // iOS 风格
          ],
        ),
      },
      initialTheme: 'm2', // 初始主题为 Material 2
      builder: (context, theme, child) {
        return MaterialApp(
          title: 'WxChip Demo',
          theme: theme.lightData,
          darkTheme: theme.darkData,
          themeMode: theme.mode,
          home: const MyHomePage(),
          builder: theme.bootstrap(), // 启动主题切换功能
        );
      },
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return const Scaffold(
      body: SingleChildScrollView(
        child: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              SizedBox(height: 40),
              WxText.displayMedium(
                'WxChip',
                gradient: LinearGradient(
                  colors: [
                    Colors.green,
                    Colors.blue,
                  ],
                  begin: Alignment.topCenter,
                  end: Alignment.bottomCenter,
                ),
                fontWeight: FontWeight.bold,
                letterSpacing: -2,
              ),
              SizedBox(height: 10),
              ThemePicker(), // 主题选择器
              SizedBox(height: 40),
              SampleAppearance(), // 示例:基础样式
              SizedBox(height: 20),
              SampleAppearanceMix(), // 示例:混合样式
              SizedBox(height: 20),
              SampleDisabled(), // 示例:禁用状态
              SizedBox(height: 20),
              SampleSeverity(), // 示例:严重性级别
              SizedBox(height: 20),
              SampleCompound(), // 示例:复合样式
              SizedBox(height: 20),
              SampleDriven(), // 示例:受控组件
              SizedBox(height: 40),
            ],
          ),
        ),
      ),
    );
  }
}

功能模块

1. 基础样式 (SampleAppearance)

展示如何设置基础的标签样式。

// 示例代码
WxChip(
  label: '标签',
  backgroundColor: Colors.blue,
  textColor: Colors.white,
)

2. 混合样式 (SampleAppearanceMix)

展示如何将多个属性组合在一起。

// 示例代码
WxChip(
  label: '混合样式',
  backgroundColor: Colors.purple,
  textColor: Colors.white,
  padding: EdgeInsets.all(8.0),
  borderRadius: BorderRadius.circular(16.0),
)

3. 禁用状态 (SampleDisabled)

展示如何设置禁用状态。

// 示例代码
WxChip(
  label: '禁用标签',
  backgroundColor: Colors.grey,
  textColor: Colors.grey[300],
  enabled: false,
)

4. 严重性级别 (SampleSeverity)

展示如何根据严重性设置不同的颜色。

// 示例代码
WxChip(
  label: '警告',
  severity: Severity.warning,
)

5. 复合样式 (SampleCompound)

展示如何结合多种样式。

// 示例代码
WxChip(
  label: '复合标签',
  backgroundColor: Colors.orange,
  textColor: Colors.white,
  padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
  borderRadius: BorderRadius.circular(20.0),
)

6. 受控组件 (SampleDriven)

展示如何动态控制标签的状态。

// 示例代码
bool _isSelected = false;

WxChip(
  label: '受控标签',
  backgroundColor: _isSelected ? Colors.green : Colors.red,
  onTap: () {
    setState(() {
      _isSelected = !_isSelected;
    });
  },
)

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

1 回复

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


在Flutter中,wx_chip 是一个用于实现类似微信标签样式的组件插件。它可以帮助你快速创建和管理类似于微信中的标签(Chip)组件。以下是 wx_chip 插件的使用步骤:

1. 安装插件

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

dependencies:
  flutter:
    sdk: flutter
  wx_chip: ^latest_version

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

2. 导入插件

在需要使用 wx_chip 的 Dart 文件中导入插件:

import 'package:wx_chip/wx_chip.dart';

3. 使用 WxChip 组件

WxChip 组件提供了多种构造函数来创建不同类型的标签。以下是几个常见的用法示例:

基本用法

WxChip(
  label: Text('标签'),
  onDeleted: () {
    print('标签被删除');
  },
)

带图标的标签

WxChip(
  label: Text('带图标的标签'),
  avatar: CircleAvatar(
    backgroundImage: AssetImage('assets/avatar.png'),
  ),
  onDeleted: () {
    print('标签被删除');
  },
)

不可删除的标签

WxChip(
  label: Text('不可删除的标签'),
)

自定义颜色和样式

WxChip(
  label: Text('自定义颜色'),
  backgroundColor: Colors.blue,
  deleteIconColor: Colors.white,
  labelStyle: TextStyle(color: Colors.white),
  onDeleted: () {
    print('标签被删除');
  },
)

4. 完整示例

以下是一个完整的示例,展示了如何在 Flutter 应用中使用 wx_chip 插件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('WxChip 示例'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              WxChip(
                label: Text('基本标签'),
                onDeleted: () {
                  print('基本标签被删除');
                },
              ),
              SizedBox(height: 10),
              WxChip(
                label: Text('带图标的标签'),
                avatar: CircleAvatar(
                  backgroundImage: AssetImage('assets/avatar.png'),
                ),
                onDeleted: () {
                  print('带图标的标签被删除');
                },
              ),
              SizedBox(height: 10),
              WxChip(
                label: Text('不可删除的标签'),
              ),
              SizedBox(height: 10),
              WxChip(
                label: Text('自定义颜色'),
                backgroundColor: Colors.blue,
                deleteIconColor: Colors.white,
                labelStyle: TextStyle(color: Colors.white),
                onDeleted: () {
                  print('自定义颜色标签被删除');
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部