Flutter проблемы с клавиатурой
Несколько проблем с клавиатурой.
- При запуске приложения, клавиатура открывается только после нажатия по TextFormField. Такой проблемы нет если переходить на эту форму, а стартовую ставить пустую страницу.
- При сворачивание приложения и его открытия, клавиатура закрывается через секунду автоматически, хотя фокус на TextFormField остаётся.
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:mask_text_input_formatter/mask_text_input_formatter.dart';
class Auth extends StatefulWidget {
const Auth({super.key});
@override
AuthState createState() => AuthState();
}
class AuthState extends State<Auth> {
static FocusNode focusNode = FocusNode();
static TextEditingController controller = TextEditingController();
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
//FocusScope.of(context).requestFocus(focusNode);
focusNode.requestFocus();
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
systemOverlayStyle: const SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
statusBarIconBrightness: Brightness.dark, // For Android (dark icons)
statusBarBrightness: Brightness.light, // For iOS (dark icons)
),
backgroundColor: Colors.transparent,
elevation: 0,
),
body: Padding(
padding: const EdgeInsets.all(50.0),
child: Center(
child: Column(
children: <Widget>[
const SizedBox(height: 100.0),
const Text(
'Добро пожаловать',
textAlign: TextAlign.center,
style: TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold),
),
const SizedBox(height: 8.0),
Container(
//color: Colors.indigo,
constraints: const BoxConstraints(maxWidth: 200),
child: const Text(
'Для входа укажите свой номер телефона',
textAlign: TextAlign.center,
style: TextStyle(fontSize: 16.0, color: Colors.grey),
),
),
const SizedBox(height: 24.0),
TextFormField(
inputFormatters: [
MaskTextInputFormatter(mask: '+# (###) ###-##-##')
],
//focusNode: focusNode,
//controller: controller,
autofocus: true,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
border: OutlineInputBorder(),
labelText: 'Телефон',
),
),
const SizedBox(height: 24.0),
ElevatedButton(
onPressed: () {
focusNode.nextFocus();
},
child: Text('Продолжить', style: TextStyle(fontSize: 16.0)),
),
],
)),
),
);
}
@override
void dispose() {
focusNode.dispose();
controller.dispose();
super.dispose();
}
}