Flutter自定义组件集合插件v_components的使用

Flutter自定义组件集合插件v_components的使用

简介

v_components 是一个超级可定制且易于使用的 Flutter 组件库。它允许开发者轻松定制各种预设的组件样式。+系列版本 是精简版,特别适用于跨海项目。更多详细信息请参阅精简组件

完整的组件列表(点击查看相关文档)主要包括以下几类:

表单类组件

分类 组件 功能/子组件/说明
表单类 VButton 基于文本的按钮
表单类 VCell 自定义单元格
表单类 VField 输入字段
表单类 VSearch 搜索框
表单类 VRoundCheckBox 圆形复选框
表单类 VTimeFilter 时间筛选器

交互类组件

分类 组件 功能/子组件/说明
交互类 VAlter 弹窗提示
交互类 VDropMenu 下拉菜单
交互类 VCascadePickerView 级联选择器
交互类 VPopu 浮动弹窗
交互类 EasyPopup 简易弹窗

展示类组件

分类 组件 功能/子组件/说明
展示类 FullScreenAppBar 全屏AppBar
展示类 VEmptyView 空视图
展示类 VRefreshView 刷新视图
展示类 VStepper 步骤条
展示类 VTopTabBarModel 顶部标签栏

图片类组件

分类 组件 功能/子组件/说明
图片类 AssetsPickerUtils 微信风格图片选择器

使用示例

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

示例代码

import 'package:example/demos/alert/showVAlert.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:v_components/themes/VThemeProvider.dart';
import 'package:v_components/v_components.dart';
import 'package:v_components/widgets/cell/cell_widget.dart';
import 'package:v_base_framework/http/http.dart';
import 'demos/button.dart';
import 'demos/cell.dart';
import 'demos/dropdownmenu_demo/dropdown_level_1.dart';
import 'demos/empty/emptys.dart';
import 'demos/fieldDemos/field_demo_levle1.dart';
import 'demos/picker_demo/picker_demo.dart';
import 'demos/radio_demo/radiogroup_demo.dart';
import 'demos/refresh_demo/refresh_demo.dart';
import 'demos/search_demo.dart';
import 'demos/stepper_demo.dart';
import 'demos/tree_demo/tree_demo_1.dart';
import 'demos/v_nine_grid/v_9_upload_index.dart';
import 'demos/v_popu/vpopu_demo.dart';
import 'demos/tabbar_demo/appbar_demo.dart';

import 'package:v_base_framework/widget/appbar_helper.dart';

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return VThemeProvider(
      appThemeData: ThemeData(
        appBarTheme: const AppBarTheme(
          surfaceTintColor: Colors.transparent, // 设置AppBar的表面颜色为透明
        ),
      ),
      child: ToastUtils.init(GetMaterialApp(
        debugShowCheckedModeBanner: false,
        title: 'Flutter Demo',
        theme: ThemeData(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
          useMaterial3: true,
        ),
        home: const MyHomePage(title: 'Flutter Demo Home Page'),
      )),
    );
  }
}

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

  final String title;

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

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

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

  [@override](/user/override)
  void initState() {
    super.initState();
    Http().init(HttpDioConfig(
      successCode: 1,
      tokenInvalidCode: 401,
      errorMessage: "请求失败,请稍后再试!",
      connectTimeout: 10 * 60 * 1000,
      isNeedProxy: false,
      proxyHost: "172.16.56.219:8615",
    ));
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: CommonAppbarUtil.getAppBar(context,
        appBarBackgroundColor: "#0058bf",
        title: "组件库3.x",
        leadingWidget: Padding(
          padding: const EdgeInsets.all(5),
          child: ClipRRect(
            borderRadius: const BorderRadius.all(Radius.circular(10)),
            child: Image.asset(
              "assets/img/demo_logo.jpg",
              width: 50,
              height: 50,
            ),
          ),
        ),
      ),
      body: SingleChildScrollView(
        child: Center(
          child: Column(
            children: [
              Text('$_counter'),
              const VCell(
                title: '字体图标',
                leftWidget: Text("\ue70a", style: TextStyle(fontFamily: 'e6_iconfont', color: Colors.redAccent)),
                rightWidget: Icon(IconData(0xe610, fontFamily: 'e6_iconfont'), color: Colors.grey),
                hiddenArrow: true,
              ),
              VCell(
                title: 'button',
                clickCallBack: () {
                  Get.to(ButtonDemo());
                },
              ),
              VCell(
                title: 'cell',
                clickCallBack: () {
                  Get.to(CellDemo());
                },
              ),
              VCell(
                title: 'field',
                clickCallBack: () {
                  Get.to(FieldDemoLevel1());
                },
              ),
              VCell(
                title: 'tabbar',
                clickCallBack: () {
                  Get.to(AppbarDemo());
                },
              ),
              VCell(
                title: 'empty',
                clickCallBack: () {
                  Get.to(EmptyDemos());
                },
              ),
              VCell(
                title: '搜索框',
                clickCallBack: () {
                  Get.to(SearchDemo());
                },
              ),
              VCell(
                title: 'dropdownmenu',
                clickCallBack: () {
                  Get.to(DropDownLevel1());
                },
              ),
              VCell(
                title: 'picker',
                clickCallBack: () {
                  Get.to(PickerDemo());
                },
              ),
              VCell(
                title: 'stepper',
                clickCallBack: () {
                  Get.to(StepperDemo());
                },
              ),
              VCell(
                title: 'refresh',
                clickCallBack: () {
                  Get.to(RefreshDemo());
                },
              ),
              VCell(
                title: 'VPopu',
                clickCallBack: () {
                  Get.to(VPopuDemo());
                },
              ),
              VCell(
                title: 'Alert',
                clickCallBack: () {
                  Get.to(VAlertDemo());
                },
              ),
              VCell(
                title: 'Radio',
                clickCallBack: () {
                  Get.to(RadioGroupDemo());
                },
              ),
              VCell(
                title: 'Tree',
                clickCallBack: () {
                  Get.to(TreeDemo());
                },
              ),
              VCell(
                title: '九宫格图',
                clickCallBack: () {
                  Get.to(V9UploadIndex());
                },
              ),
            ],
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

更多关于Flutter自定义组件集合插件v_components的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter自定义组件集合插件v_components的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


v_components 是一个假设的 Flutter 自定义组件集合插件,它可能包含了一系列常用的自定义组件,用于简化开发流程。以下是如何使用 v_components 插件的步骤:

1. 安装插件

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

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

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

2. 导入插件

在你的 Dart 文件中导入 v_components 插件:

import 'package:v_components/v_components.dart';

3. 使用自定义组件

v_components 插件可能包含多种自定义组件,以下是一些常见的用法示例:

3.1 自定义按钮

假设 v_components 提供了一个 VCustomButton 组件,你可以这样使用它:

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

3.2 自定义卡片

假设 v_components 提供了一个 VCustomCard 组件,你可以这样使用它:

VCustomCard(
  title: 'Card Title',
  subtitle: 'This is a custom card',
  image: 'assets/images/sample.jpg',
  onTap: () {
    print('Card Tapped!');
  },
);

3.3 自定义加载指示器

假设 v_components 提供了一个 VCustomLoader 组件,你可以这样使用它:

VCustomLoader(
  size: 50.0,
  color: Colors.red,
);

3.4 自定义对话框

假设 v_components 提供了一个 VCustomDialog 组件,你可以这样使用它:

VCustomDialog(
  title: 'Dialog Title',
  content: 'This is a custom dialog content.',
  onConfirm: () {
    print('Confirmed!');
  },
  onCancel: () {
    print('Cancelled!');
  },
);

4. 自定义主题和样式

v_components 可能还支持自定义主题和样式。你可以在 MaterialApp 中设置主题:

MaterialApp(
  theme: ThemeData(
    primarySwatch: Colors.blue,
    // 其他主题设置
  ),
  home: MyHomePage(),
);

5. 更多组件

v_components 可能还包含其他自定义组件,如 VCustomTextFieldVCustomSwitch 等。你可以查阅插件的文档或源代码来了解更多组件的使用方法。

6. 示例代码

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

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'VComponents Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('VComponents Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            VCustomButton(
              onPressed: () {
                print('Button Pressed!');
              },
              text: 'Click Me',
              color: Colors.blue,
              textColor: Colors.white,
            ),
            SizedBox(height: 20),
            VCustomCard(
              title: 'Card Title',
              subtitle: 'This is a custom card',
              image: 'assets/images/sample.jpg',
              onTap: () {
                print('Card Tapped!');
              },
            ),
            SizedBox(height: 20),
            VCustomLoader(
              size: 50.0,
              color: Colors.red,
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部