Я буду признателен, если кто-нибудь может помочь с тем, как обновить входное значение для просмотра списка, как показано ниже в прикрепленном GIF:
В основном мой TextField выглядит так:
TextField(
keyboardType:
TextInputType
.multiline,
maxLines:
null,
controller:_controllerPassPhrase,
)
И мой список выглядит так:
ListView.separated(
separatorBuilder:
(context, index) => Divider(
color: Colors.white,
),
itemCount:
data == null ? 0 : data.length,
itemBuilder: (context, index) {
return Card(
Text" Input field should come here when send button clicked ",
);
})
Поэтому всякий раз, когда пользователь вводит что-либо в мое текстовое поле, я хочу, чтобы он сразу же переходил к списку, например, к прикрепленному файлу GIF.
Вы можете иметь List
из Strings
(в этом примере с именем data
) и заполнить его своими входными сообщениями.
ОБНОВЛЕНИЕ на основе вашего запроса в разделе комментариев У вас может быть List
вашего пользовательского типа, который содержит username
и comment
, например:
class _TestState extends State<Test> {
final _controllerPassPhrase = TextEditingController();
final _controllerUsername = TextEditingController();
List<UserWithComment> data = [];
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: [
SizedBox(
height: 300,
child: ListView.separated(
separatorBuilder: (context, index) => Divider(
color: Colors.white,
),
itemCount: data == null ? 0 : data.length,
itemBuilder: (context, index) {
return Card(
child: Text(
data[index].username + ": ${data[index].comment}",
),
);
},
),
),
TextField(
decoration: InputDecoration(hintText: 'username'),
textInputAction: TextInputAction.next,
controller: _controllerUsername,
),
TextField(
decoration: InputDecoration(hintText: 'comment'),
keyboardType: TextInputType.multiline,
textInputAction: TextInputAction.done,
controller: _controllerPassPhrase,
onSubmitted: (value) => setState(() {
if (_controllerUsername.text.isNotEmpty && value.isNotEmpty) {
data.add(UserWithComment(_controllerUsername.text, value));
}
}),
),
],
),
),
);
}
}
class UserWithComment {
final String username;
final String comment;
UserWithComment(this.username, this.comment);
}
Я предполагаю, что вы спрашиваете, что делать, если вы хотите добавить несколько значений одновременно, тогда у вас есть метод addAll
вместо add
.
Я добавлю ```addAll``` для двух разных TextField?
Извините, я действительно не понимаю вашего вопроса. Пожалуйста, опишите, чего вы хотите достичь.
У меня есть два TextField с FullName и Comment, когда пользователь вводит и нажимает кнопку «Отправить». Я хотел бы добавить их в список.
Тогда ваш List
не обязательно должен быть типа String
, он может быть другого типа (например, ваш собственный класс, в котором есть user
и comment
). Поэтому, когда вы добавляете свое имя пользователя и комментарий, вы можете сохранить его в этом List
этого типа (класса).
Не могли бы вы помочь обновить свой ответ по этому поводу?
Я обновил его. Настройте его под свои нужды.
Спасибо, я вижу ``` data.add(UserWithComment(_controllerUsername.text, value)); ``` для добавления в ``` _controllerUsername``` как насчет ``` _controllerComment```
Вы получаете username
из _controllerUsername.text
и comment
из value
атрибута onSubmitted
TextField
, передаете их конструктору UserWithComment
и добавляете в свой список data
. Я думаю, что я правильно ответил на ваш вопрос и что эта ветка становится слишком длинной. Хватит с меня.
Давайте продолжить обсуждение в чате.
Спасибо, а если значение, которое я добавляю из
data.add(value)
, больше единицы?