#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(),
)