У меня есть простое тестовое приложение - TextField
в Scaffold
. На Android, после ввода значения, нажатия кнопки «Домой», а затем возврата к / восстановления приложения значение сбрасывается до начального значения / состояния, а не введенного значения / состояния, в котором оно находилось непосредственно перед нажатием кнопки. Кнопка «Домой» (если клавиатура не была явно отклонена).
При запуске того же приложения на iOS она работает как положено - значение не сбрасывается (и клавиатуру не нужно сначала закрывать) , Я пробовал это с / без состояния, явно объявив контроллер со значением, et c. - без кости.
Пример кода:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'TextField Test App',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String textValue;
@override
void initState() {
super.initState();
textValue = "initial value";
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("TextField Text"),
),
body: TextField(
controller: TextEditingController(
text: textValue
),
)
);
}
}
Анимация, показывающая сброс значения, когда клавиатура не отключена, и сохранение значения после отклонения клавиатуры