Mar*_*shb 2 forms flutter dropdownbutton
我想在 DropdownButtonFormField 重置值,值更改为 null,但 DropdownButtonFormField 不会更改。问题出在哪儿?如果我使用了 DropdownButton,它会正确更改值,值被清除。我需要使用 DropdownButtonFormField。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
MyAppState createState() => MyAppState();
}
class MyAppState extends State<MyApp> {
String abc;
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center (
child: Column(
children: <Widget>[DropdownButtonFormField(
hint: Text('select value'),
value: abc,
items: <String>['A', 'B', 'C', 'D'].map((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (String newValue) {
setState(() {
abc = newValue;
});
},
),
Text("value is $abc"),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: (){
setState((){
abc = null;
});
},
tooltip: 'Reset',
child: Icon(Icons.clear),
)
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
您可以使用一个GlobalKey<FormFieldState>.
class SomeWidget extends StatelessWidget {
final GlobalKey<FormFieldState> _key;
@override
Widget build() {
return DropdownButtonFormField(
key: _key,
//...
)
}
reset() {
_key.currentState.reset();
}
}
Run Code Online (Sandbox Code Playgroud)
https://dartpad.dev/04247868fa2e86c5f417532486b48870
class SomeWidget extends StatelessWidget {
final GlobalKey<FormFieldState> _key = GlobalKey<FormFieldState>();
@override
Widget build() {
return DropdownButtonFormField(
key: _key,
//...
)
}
reset() {
_key.currentState.reset();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1781 次 |
| 最近记录: |