-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
Description
Steps to Reproduce
- Run
flutter create bug. - Create a form with
TextFormFieldandFocusNode.
class InputField extends StatelessWidget {
final String hint;
final TextEditingController controller;
final FocusNode focusNode;
final bool obscureText;
final String Function(String value) validator;
final VoidCallback onEditingComplete;
final TextInputType keyboardType;
final TextInputAction textInputAction;
InputField({
@required this.hint,
@required this.controller,
@required this.validator,
@required this.focusNode,
this.onEditingComplete,
this.obscureText = false,
this.keyboardType = TextInputType.text,
this.textInputAction = TextInputAction.done,
});
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: TextFormField(
focusNode: focusNode,
controller: controller,
maxLines: 1,
expands: false,
enableInteractiveSelection: true,
autovalidate: true,
obscureText: obscureText,
textCapitalization: TextCapitalization.words,
keyboardType: keyboardType,
onEditingComplete: onEditingComplete,
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(100),
),
hintText: hint,
contentPadding: EdgeInsets.only(left: 16),
),
validator: validator,
),
);
}
}
class _EmailAuthScreenState extends State<EmailAuthScreen> {
final _formKey = GlobalKey<FormState>();
final TextEditingController _emailController = TextEditingController();
final TextEditingController _passController = TextEditingController();
FocusNode _emailFocus;
FocusNode _passFocus;
@override
void initState() {
super.initState();
_emailFocus = FocusNode();
_passFocus = FocusNode();
}
@override
void dispose() {
_emailFocus.dispose();
_passFocus.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.transparent,
),
body: Center(
child: SingleChildScrollView(
child: Form(
key: _formKey,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
'Log into your account',
style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.w600,
),
),
InputField(
focusNode: _emailFocus,
controller: _emailController,
hint: 'Email address',
keyboardType: TextInputType.emailAddress,
textInputAction: TextInputAction.next,
onEditingComplete: () => _passFocus.requestFocus(),
validator: (value) {
if (value.isEmpty) {
return 'Email cannot be empty';
}
if (!value.contains('@') || !value.contains('.')) {
return 'Invalid email address';
}
return null;
},
),
SizedBox(height: 35),
InputField(
focusNode: _passFocus,
controller: _passController,
hint: 'Password',
obscureText: true,
textInputAction: TextInputAction.go,
onEditingComplete: () {
_emailFocus.unfocus();
_passFocus.unfocus();
},
validator: (value) {
if (value.isEmpty) {
return 'Password cannot be empty';
}
if (value.length < 6) {
return 'Password cannot be less than 6 characters';
}
return null;
},
),
],
),
),
),
),
);
}
}
Results
flutter doctor -v
[√] Flutter (Channel beta, v1.17.0-3.2.pre, on Microsoft Windows [Version 10.0.18362.175], locale en-GH)
• Flutter version 1.17.0-3.2.pre at D:\flutter
• Framework revision 2a7bc389f2 (7 days ago), 2020-04-21 20:34:20 -0700
• Engine revision 4c8c31f591
• Dart version 2.8.0 (build 2.8.0-dev.20.10)
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.1)
• Android SDK at C:\Users\debra\AppData\Local\Android\Sdk
• Platform android-29, build-tools 29.0.1
• ANDROID_HOME = C:\Users\debra\AppData\Local\Android\Sdk
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
• All Android licenses accepted.
[√] Chrome - develop for the web
• Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
[√] Android Studio (version 3.5)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 39.0.3
• Dart plugin version 191.8423
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
[√] VS Code (version 1.44.2)
• VS Code at C:\Users\debra\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.9.1
[√] Connected device (3 available)
• SM A305F • R58M62W011R • android-arm64 • Android 10 (API 29)
• Chrome • chrome • web-javascript • Google Chrome 81.0.4044.122
• Web Server • web-server • web-javascript • Flutter Tools
• No issues found!
Metadata
Metadata
Assignees
Labels
No labels

