Flutter插件easy_comp的安装及使用方法
Flutter插件easy_comp的安装及使用方法
组件
- BaseWidget
- BasefulWidget
- BaseState
- ValidatorUtil
- FirebaseFirestoreRepository
- CustomFuture
Flutter插件easy_comp安装
- 在
pubspec.yaml
文件中添加最新版本,并运行dart pub get
。
dependencies:
easy_comp: ^0.0.12
- 导入包以在您的 Flutter 应用程序中使用。
import 'package:easy_comp/easy_comp.dart';
Flutter插件easy_comp使用方法
使用 BaseWidget 在 StatelessWidget 中
import 'package:flutter/material.dart';
import 'package:easy_comp/easy_comp.dart';
class EasyCompTeste extends BaseWidget {
EasyCompTeste({Key? key});
[@override](/user/override)
Widget builder(BuildContext context, BoxConstraints constrains) {
return Container(
child: Center(
child: Text("使用 BaseWidget"),
),
);
}
}
使用 BasefulWidget 在 StatefulWidget 中
import 'package:flutter/material.dart';
import 'package:easy_comp/easy_comp.dart';
class EasyCompTeste extends BasefulWidget {
EasyCompTeste({Key? key});
[@override](/user/override)
_EasyCompTesteState createState() => _EasyCompTesteState();
}
class _EasyCompTesteState extends BasefulWidgetState<EasyCompTeste> {
[@override](/user/override)
Widget builder(BuildContext context, BoxConstraints constrains) {
return Container(
child: Center(
child: Text("使用 BaseWidgetFull"),
),
);
}
}
使用 BaseState 在 StatefulWidget 中
import 'package:easy_comp/easy_comp.dart';
import 'package:easy_comp/src/testes/provider_basestate.dart';
import 'package:flutter/material.dart';
class TesteBaseState extends StatefulWidget {
const TesteBaseState({super.key});
[@override](/user/override)
BaseState<TesteBaseState, ProviderBaseState> createState() => _TesteBaseStateState();
}
class _TesteBaseStateState extends BaseState<TesteBaseState, ProviderBaseState> {
[@override](/user/override)
void onInit() {
super.onInit();
debugPrint(provider.titulo);
provider.titulo = "改变";
}
[@override](/user/override)
void onResume() {
super.onResume();
provider.getDadosApi();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Text(provider.titulo);
}
}
使用 FirebaseFirestoreRepository
import 'dart:developer';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:easy_comp/easy_comp.dart';
import 'package:easy_comp/src/utils/utils.dart';
class TesteModel {
String id = "";
String nome = "";
String categoria = "INITIAL";
TesteModel({
required this.id,
required this.nome,
this.categoria = "INITIAL",
});
TesteModel.fromDocument(DocumentSnapshot<Map<String, dynamic>> doc) {
final map = doc.data()!;
id = getMap<String>(key: "id", map: map, retur: doc.id);
nome = getMap<String>(key: "nome", map: map, retur: "");
categoria = getMap<String>(key: "categoria", map: map, retur: "INITIAL");
}
TesteModel.fromJson(Map<String, dynamic> map, String? id) {
this.id = id ?? (getMap<String>(key: "id", map: map, retur: ""));
nome = getMap<String>(key: "nome", map: map, retur: "");
categoria = getMap<String>(key: "categoria", map: map, retur: "INITIAL");
}
static Map<String, dynamic> toJson(TesteModel model) => {
"id": model.id,
"nome": model.nome,
"categoria": model.categoria,
};
[@override](/user/override)
String toString() => 'Teste(id: $id, nome: $nome, categoria: $categoria)\n';
}
class TesteRepository extends FirebaseFirestoreRepository<TesteModel> {
TesteRepository()
: super(
collectionPath: 'BAIRROS',
firestore: FirebaseFirestore.instance,
fromJson: TesteModel.fromJson,
toJson: TesteModel.toJson,
);
[@override](/user/override)
CollectionReference<TesteModel> get collection => super.collection;
Future<List<TesteModel>> todosByCategoria() async {
final lista = await collection.where("categoria", isEqualTo: "INITIAL").get().then((value) => value.docs.map((e) => e.data()).toList());
return lista;
}
}
void main() async {
final repo = TesteRepository();
final todos = await repo.buscarTodos(
descending: false,
limit: 10,
orderBy: "nome",
where: QueryConstraint(field: "categoria", op: QueryOperation.isEqualTo, value: "INITIAL"),
// 或者
whereList: [
QueryConstraint(field: "categoria", op: QueryOperation.isEqualTo, value: "INITIAL"),
QueryConstraint(field: "nome", op: QueryOperation.isGreaterThanOrEqualTo, value: "测试"),
],
);
log(todos.toString());
}
使用 CustomFuture
import 'package:flutter/material.dart';
import 'package:easy_comp/easy_comp.dart';
class EasyCompTeste extends BaseWidget {
EasyCompTeste({Key? key});
Future<List<String>> getValues() async {
await Future.delayed(const Duration(seconds: 2));
return ["1", "2", "3"];
}
[@override](/user/override)
Widget builder(BuildContext context, BoxConstraints constrains) {
return Scaffold(
appBar: AppBar(
title: const Text("测试"),
),
body: CustomFuture<List<String>>(
future: getValues(),
emptyWidget: const Text("空"),
withLoading: true,
withError: true,
erroBuilder: (error) {
return Text(error.toString());
},
builder: (values) {
return ListView.builder(
itemCount: values.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(values[index]),
);
},
);
},
),
);
}
}
使用 EasyComp 主题与 EasyComp 的小部件结合
import 'package:flutter/material.dart';
import 'package:easy_comp/easy_comp.dart';
void main() {
configStyles(
primaryColor: Colors.redAccent,
);
runApp(
MaterialApp(
theme: EasyCompTheme.i.themeData,
home: EasyCompTeste(),
),
);
}
class EasyCompTeste extends BaseWidget {
EasyCompTeste({Key? key});
[@override](/user/override)
Widget builder(BuildContext context, BoxConstraints constrains) {
return Scaffold(
appBar: AppBar(
title: const Text("测试"),
),
body: Column(
children: [
Text(
"根据主题样式进行美化",
style: context.textApp.textBold.copyWith(
fontSize: 25,
color: context.colors.primary,
),
),
EasyCompInputCalendar(
onChange: (data) {
print(data);
},
),
const SizedBox(height: 30),
EasyCompInputCalendar.multiplos(
labelText: "日期范围",
onChange: (data1, data2) {
print(data1);
print(data2);
},
),
const SizedBox(height: 30),
EasyCompInput(
labelText: "输入文本",
onChange: (data1) {
print(data1);
},
icon: Icon(Icons.search),
),
const SizedBox(height: 10),
EasyCompInput(
labelText: "输入密码",
isPassword: true,
onChange: (data1) {
print(data1);
},
validator: (v) {},
),
const SizedBox(height: 10),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
child: EasyCompInput(
labelText: "输入 cpfOrCnpj",
typeInput: EasyCompInputType.cpfOrCnpj,
onChange: (data1) {
print(data1);
},
validator: (v) {},
withValidation: true,
icon: Icon(Icons.search),
),
),
Expanded(
child: EasyCompInput(
labelText: "输入 cpfOrCnpj",
typeInput: EasyCompInputType.cpfOrCnpj,
onChange: (data1) {
print(data1);
},
validator: (v) {},
withValidation: true,
),
),
EasyCompButton(
width: 50,
height: 35,
child: Icon(Icons.search),
onPressed: () {},
),
],
),
const SizedBox(height: 10),
EasyCompInput.future(
labelText: "输入邮政编码",
typeInput: EasyCompInputType.cep,
onChange: (data1) {
print(data1);
},
validator: ValidatorUtil(isFuture: true).required().custom(
future: (value) async {
Utils.delay(3);
return true;
},
).buildFuture(),
withValidation: true,
),
const SizedBox(height: 10),
EasyCompInput.future(
labelText: "输入cpf",
typeInput: EasyCompInputType.cpf,
onChange: (data1) {
print(data1);
},
)
],
),
);
}
}
使用 EasyComp 验证器在 TextFormField 中
import 'package:easy_comp/easy_comp.dart';
import 'package:flutter/material.dart';
void main() {
configStyles(
primaryColor: Colors.redAccent,
);
runApp(
MaterialApp(
theme: EasyCompTheme.i.themeData,
home: EasyCompTeste(),
),
);
}
class EasyCompTeste extends BaseWidget {
EasyCompTeste({Key? key});
[@override](/user/override)
Widget builder(BuildContext context, BoxConstraints constrains) {
return Scaffold(
appBar: AppBar(
title: const Text("EasyComp验证"),
),
body: Column(
children: [
EasyCompInput(
onChange: (data) {
print(data);
},
// 验证器
// validator: EasyCompValid.required("必填字段"),
// validator: EasyCompValid.cpf("无效的CPF"),
// validator: EasyCompValid.cnpj("无效的CNPJ"),
// validator: EasyCompValid.email("无效的电子邮件"),
// validator: EasyCompValid.maxLength(10, "最多10个字符"),
// validator: EasyCompValid.minLength(10, "最少10个字符"),
// validator: EasyCompValid.custom(
// 验证: (value) {
// if(value == null) return false;
// return value == "123" ? true : false;
// },
// 消息: "无效值",
// ),
validator: EasyCompValid.multiples([
EasyCompValid.required("必填字段"),
EasyCompValid.cpf("无效的CPF"),
]),
),
],
),
);
}
}
更多关于Flutter插件easy_comp的安装及使用方法的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter插件easy_comp的安装及使用方法的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,easy_comp
可能是一个自定义或第三方插件,用于简化某些常见任务的开发,或者提供一些预定义的UI组件。由于你提到它的介绍为“undefined”,我们可以假设它可能是一个探索性质或自定义的插件。
以下是对 easy_comp
插件可能的探索和使用步骤:
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 easy_comp
插件的依赖项。假设它在 pub.dev
上有发布,你可以通过以下方式添加:
dependencies:
flutter:
sdk: flutter
easy_comp: ^1.0.0 # 假设版本为1.0.0
然后运行 flutter pub get
来安装插件。
2. 导入插件
在你的 Dart 文件中导入 easy_comp
插件:
import 'package:easy_comp/easy_comp.dart';
3. 探索插件功能
由于 easy_comp
的介绍为“undefined”,我们可以通过以下方式来探索它的功能:
- 查看文档: 如果插件有文档,通常在
pub.dev
页面或插件的README.md
文件中可以找到。 - 查看源代码: 你可以查看插件的源代码,了解它提供的类和功能。
- 尝试使用: 通过尝试使用插件中的各种组件或功能来了解它的用途。
4. 使用插件
假设 easy_comp
提供了一些预定义的UI组件,你可以像使用其他Flutter组件一样使用它们。例如:
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Easy Comp Demo'),
),
body: Center(
child: EasyButton(
onPressed: () {
print('Button Pressed!');
},
text: 'Click Me',
),
),
);
}
}
在这个例子中,EasyButton
是假设 easy_comp
提供的一个自定义按钮组件。
5. 自定义组件
如果 easy_comp
允许自定义,你可以通过传递参数来定制组件的行为和外观。例如:
EasyButton(
onPressed: () {
print('Custom Button Pressed!');
},
text: 'Custom Button',
color: Colors.blue,
textColor: Colors.white,
);