Преобразование текстового виджета в виджет текстового поля при определенном щелчке текста

#flutter #dart #text #textfield

#flutter #dart #текст #текстовое поле

Вопрос:

Если пользователь нажимает на определенный текст, он должен быть преобразован в текстовое поле, и мне нужно получить входное значение от пользователя, до сих пор я добавлял строку в список, используя разделение и отображая элементы списка с помощью listview.

у меня есть два сомнения. 1. как я могу преобразовать текст в текстовое поле при определенном щелчке текста. 2. если я повторно выполняю текстовое поле в listview, оно занимает всю ширину, я не могу обернуть текстовое поле внутри контейнера, указав ширину, поскольку ширина текста может изменяться в зависимости от ответа API

любое предложение будет оценено.

это то, чего мне нужно достичь

   String demoString = 'You might want to try eating more healthy food.';

  new Row(children: <Widget>[
              Expanded(
                  child: SizedBox(
                      height: 150.0,
                      child: ListView(
                        padding: EdgeInsets.all(20),
                        scrollDirection: Axis.horizontal,
                        children: demoString
                            .split(' ')
                            .map((String text) => Padding(
                                padding: const EdgeInsets.all(18.0),
                                child: Text(text)))
                            .toList(),
                      )))
            ])

 

Ответ №1:

Чтобы иметь возможность щелкнуть и получить текстовое поле, вы должны создать небольшой виджет (например), который будет определять, получил ли он щелчок (GestureDetector / inkWell …), А затем изменить виджет на другой.

Например, MySwapWidget будет содержать эту идею :

 MySwapWidget(
  selected: (default value, could be useful, false by default) true / false,
  childIfSelected: TextField(),
  childIfNotSelected: Text(),
)