当使用 DropdownButtonFormField 而不是 DropdownButton 时,重建小部件时不会考虑给定的 selectedValue。我什么时候才能避免这个问题?
import 'package:flutter/material.dart';
void main() {
runApp(
MaterialApp(
home: HomeRoute(),
),
);
}
class HomeRoute extends StatefulWidget {
const HomeRoute({super.key});
@override
State<HomeRoute> createState() => _HomeRouteState();
}
class _HomeRouteState extends State<HomeRoute> {
String selectedValue = '1';
@override
Widget build(BuildContext context) {
print('Building with selected value : $selectedValue');
return Scaffold(
appBar: AppBar(title: const Text('Title'),),
body: Column(
children: [
DropdownButtonFormField<String>(
value: selectedValue,
onChanged: (value) {
setState(() {
// Not updating the value
// selectedValue = value!;
});
},
items: [
for(int i = 0; i < 10; i++)
DropdownMenuItem<String>(value: '$i', child: Text('$i'),),
],
),
],
),
);
}
}
Stackoverflow 告诉我需要添加更多细节,但没什么可说的了。
DropdownButton
DropdownButton<String>(
value: selectedValue,
onChanged: (value) {
setState(() {
selectedValue = value!;
});
},
items: [
for (int i = 0; i < 10; i++)
DropdownMenuItem<String>(
value: '$i',
child: Text('$i'),
),
],
),