#flutter
#трепетание
Вопрос:
Я использую элемент управления TextEditingController, и когда я устанавливаю текст элемента управления на новые данные с помощью control.text = 'hi';
функции in, listview прокручивается до виджета, который использует этот элемент управления, потому что данные были изменены.
Как предотвратить прокрутку виджета, который использует этот элемент управления, когда я меняю текст элемента управления и остаюсь в том же положении на экране?
Widget textbox_widget1(){
return TextFormField(
keyboardType: TextInputType.number,
controller: control,
autofocus: false,
);
}
и здесь я добавил свой listview в каркас в функции сборки
child: Scrollbar(
controller: _scrollController,
child: Padding(
padding: EdgeInsets.only( bottom: MediaQuery.of(context).viewInsets.bottom / 1.5), // fixade keyboard över title med padding, 1.5 ta bort vit padding
child: ListView(
controller: _scrollController,
shrinkWrap: true,
padding: EdgeInsets.only(left: 24.0, right: 24.0),
children: <Widget>[
SizedBox(height: 15.0),
textbox_widget1(),
SizedBox(height: 15.0),
textbox_widget2(),
SizedBox(height: 15.0),
textbox_widget3(),
SizedBox(height: 15.0),
textbox_widget4(),
textbox_widget5(),
SizedBox(hight: 70,),
],
),
),
),
и функция выглядит примерно так
void set_text(){control.text = 'new data';}
Спасибо
Комментарии:
1. Я добавил listview
2. Я думаю, вам следует использовать
physics
с условиемListView
, чтобы предотвратить прокрутку во время использования.3. Я не могу использовать physics: NeverScrollableScrollPhysics(), потому что это помешает пользователю прокручивать вниз
4. Я думаю, почему он прокручивается до виджета TextFormField, который использует этот элемент управления?
Ответ №1:
Я решил проблему, используя TextEditingController
control = new TextEditingController(text: 'new value');