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
更多关于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
可能还包含其他自定义组件,如 VCustomTextField
、VCustomSwitch
等。你可以查阅插件的文档或源代码来了解更多组件的使用方法。
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,
),
],
),
),
);
}
}