Я пишу форму на Flutter, но пока я пишу, textFields не видит, потому что клавиатура его закрывает. Итак, я хочу уменьшить размер изображения и при необходимости переместить его, чтобы показать текстовые поля.
Вот как это начинается:
И когда я пишу в поле пароля, это так:
Итак, я хочу, чтобы, когда я пишу страницу, перемещаться, чтобы увидеть активное текстовое поле фокуса. У каждого TextField есть TextController и FocusNode, но я не знаю, как это решить.
Один пример текстового поля:
final emailField = TextFormField(
controller: emailController,
focusNode: emailFocusNode,
keyboardType: TextInputType.emailAddress,
onFieldSubmitted: (String value) {
FocusScope.of(context).requestFocus(passwordFocusNode);
},
validator: (val) =>
(!EmailValidator.validate(val)) ? 'Incorrect Email' : null,
onSaved: (val) => _username = val,
textInputAction: TextInputAction.next,
style: style,
decoration: InputDecoration(
contentPadding: EdgeInsets.fromLTRB(20.0, 15.0, 20.0, 15.0),
hintText: "Email",
fillColor: Colors.white,
filled: true,
border:
OutlineInputBorder(borderRadius: BorderRadius.circular(32.0))),
);
Подводя итог, мне нужно переместить экран в зависимости от того, какое TextField выбрано для его отображения и что оно не закрыто клавиатурой.
@user8773560 user8773560 не могли бы вы привести пример, пожалуйста?
Вы используете Scaffold для этого экрана? Кроме того, используйте ListView вместо Column для текстовых файлов и изображений, тогда все будет в порядке. Здесь вам поможет свойство в Scaffold, то есть resizeToAvoidBottomInset, которое по умолчанию равно true. api.flutter.dev/flutter/material/Scaffold/…
@JuanGomez Предоставьте нам код для всего экрана, чтобы мы могли помочь вам, если вы все еще не можете понять это.





Попробуйте включить свой код, например, в SingleChildScrollView
import 'package:flutter/material.dart';
class S56887705 extends StatelessWidget {
@override
Widget build(BuildContext context) {
final emailField = TextFormField(
keyboardType: TextInputType.emailAddress,
textInputAction: TextInputAction.next,
decoration: InputDecoration(
contentPadding: EdgeInsets.fromLTRB(20.0, 25.0, 20.0, 25.0),
hintText: "Email",
fillColor: Colors.white,
filled: true,
border:
OutlineInputBorder(borderRadius: BorderRadius.circular(32.0))),
);
return MaterialApp(
home: SafeArea(
child: Scaffold(
body: SingleChildScrollView(
child: Column(
children: <Widget>[
emailField,
SizedBox(
height: 35,
),
emailField,
SizedBox(
height: 35,
),
emailField,
SizedBox(
height: 35,
),
emailField,
SizedBox(
height: 35,
),
emailField,
SizedBox(
height: 35,
),
emailField,
SizedBox(
height: 35,
),
emailField,
SizedBox(
height: 35,
),
emailField,
SizedBox(
height: 35,
),
],
),
),
)),
);
}
}
Спасибо! У меня есть GestureDetector, и я забыл SingleChildScrollView
Вы можете обернуть его в ScrollerView. когда вы будете сфокусированы на текстовых полях, изображение переместится наверх