在Flutter(Android)中
我在Flutter应用中有两个TextFormField。当我按下后退按钮。这些文本字段正在空白。
class FirstScreen extends StatelessWidget {
TextEditingController charectorsController = new TextEditingController();
TextEditingController lengthCntroller = new TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('First Screen'),
),
body: Center(
child: Container(
margin: EdgeInsets.all(8),
child: SingleChildScrollView(
child: Column(
children: [
myEditText(charectorsController, "Enter charectors Word"),
myEditText(lengthCntroller, "Word length"),
RaisedButton(
child: Text('Launch screen'),
onPressed: () {
// Navigate to the second screen using a named route
// Navigator.pushNamed(context, '/second');
print("Rahul");
readFile();
},
)
],
),
)),
),
);
}
}
和
myEditText(TextEditingController myController, String s) {
return new Container(
margin: EdgeInsets.all(8),
child: new TextFormField(
controller: myController,
decoration: new InputDecoration(
labelText: s,
fillColor: Colors.white,
border: new OutlineInputBorder(
borderRadius: new BorderRadius.circular(25.0),
borderSide: new BorderSide(),
),
//fillColor: Colors.green
),
validator: (val) {
if (val.length == 0) {
return "Cannot be empty";
} else {
return null;
}
},
keyboardType: TextInputType.emailAddress,
style: new TextStyle(
fontFamily: "Poppins",
),
),
);
}
路由
void main() => runApp(MaterialApp(
title: 'Named Routes Demo',
// Start the app with the "/" named route. In our case, the app will start
// on the FirstScreen Widget
initialRoute: '/',
routes: {
// When we navigate to the "/" route, build the FirstScreen Widget
'/': (context) => FirstScreen(),
// When we navigate to the "/second" route, build the SecondScreen Widget
'/second': (context) => SecondScreen(),
},
));
将您StatelessWidget
转换为Stateful
一个,它将完成工作。问题是,通过在TextEditingController
中声明in StatelessWidget
,它将被“重置”,因为小部件的构建函数称为:'(。因此,您应该执行以下操作:
class U extends StatefullWidget
....
class _UState extends State<U>
final TextEditingController controller = TextEditingController();
Widget build(..) => TextField(controller: controller)
这应该可以做:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句