Flutter列表文本输入插件listtextfield的使用
Flutter 列表文本输入插件 ListTextField 的使用
特性
- 可以在输入时创建列表的文本字段。
- 提供了一个可以与其他文本字段配合使用的控制器,以便进行更多的自定义操作。
- 可以通过普通退格键从列表中删除项目。
获取开始
在你的 pubspec.yaml
文件中添加包依赖:
dependencies:
listtextfield: any
在你的项目文件中导入包:
import 'package:listtextfield/listtextfield.dart';
使用方法
首先,创建一个 ListTextEditingController
,并指定用户应使用的列表分隔符:
final _controller = ListTextEditingController(',');
你也可以初始化控制器并带上一些初始项:
final _controller = ListTextEditingController(',', {'InitialItem1', 'InitialItem2'});
然后,在你的 widget 树中添加一个 ListTextField
小部件,并提供控制器:
Widget build(BuildContext context){
return Column(
children: [
ListTextField(
controller: _controller,
itemBuilder: (ctx, item){
// 构建列表项的外观
return Chip(
label: Text(item), // 显示列表项的文本
onDeleted: () => _controller.removeItem(item), // 删除列表项
);
}
),
],
);
}
你可以通过调用控制器上的 items
方法来访问已输入的列表:
final myItems = _controller.items;
完整示例代码
以下是一个完整的示例代码,展示了如何使用 ListTextField
:
import 'package:flutter/material.dart';
import 'package:listtextfield/listtextfield.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: 'ListTextField Demo',
home: ListTextFieldDemo(),
);
}
}
class ListTextFieldDemo extends StatefulWidget {
const ListTextFieldDemo({super.key});
@override
State<ListTextFieldDemo> createState() => _ListTextFieldDemoState();
}
class _ListTextFieldDemoState extends State<ListTextFieldDemo> {
final _controller = ListTextEditingController(',');
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('List Text Field')),
body: SingleChildScrollView(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text('Email addresses'),
ListTextField(
controller: _controller,
itemBuilder: (_, value) {
return Chip(
label: Text(value),
onDeleted: () => _controller.removeItem(value),
);
},
itemSpacing: 8, // 项之间的间距
itemLineSpacing: 4, // 行之间的间距
validator: (value) {
final emailValid = RegExp(
r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")
.hasMatch(value);
if (emailValid) {
return null;
} else {
return 'Enter a valid email address';
}
},
decoration:
const BoxDecoration(border: Border(bottom: BorderSide())),
),
],
),
),
);
}
}
额外信息
- 欢迎提交 PR。
- 如果发现任何问题,请报告它。
- 如果你觉得这个包有用或有趣,请给它点赞或在 GitHub 上打上星标。
MajorE 🤖
更多关于Flutter列表文本输入插件listtextfield的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复