如何在Flutter中将字符串从TextFormField添加到列表中



我还没有代码,但我希望能够将数据从textformfield保存到列表中。

每当检测到逗号时,我想从文本表单字段中获取字符串,例如,向帖子或视频添加标签

我写了一个简单的程序,当它检测到文本中有逗号时,它会将TextFormField的文本添加到ListView

import 'dart:ui';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final List<String> _data = List.empty(growable: true);
final TextEditingController _textFieldController = TextEditingController();
final ScrollController _scrollController = ScrollController();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Add to the list!")),
body: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextFormField(
controller: _textFieldController,
decoration: InputDecoration(
labelText: 'Enter your text',
),
style: TextStyle(fontSize: 20),
onChanged: (value) {
if (value.contains(','))
Future.delayed(
Duration.zero,
() => setState(() {
final str = value.replaceAll(',', '');
_textFieldController.text = '';
if (str.isNotEmpty) _data.add(str);
}),
).then(
(value) => _scrollController.animateTo(
_scrollController.position.maxScrollExtent + 30,
duration: const Duration(milliseconds: 250),
curve: Curves.easeInOut,
),
);
},
),
SizedBox(height: 20),
Expanded(
child: ListView.builder(
controller: _scrollController,
itemExtent: 30,
cacheExtent: 30,
itemCount: _data.length,
itemBuilder: (context, index) => Text(
_data[index],
style: TextStyle(
fontSize: 20,
fontStyle: FontStyle.italic,
color: Colors.blue[900],
),
),
),
),
],
),
),
),
);
}
}

最新更新