[英]Default Selected DropdownMenuItem Flutter
如何在 DropdownMenuItem 中设置默认选择?
因为我仍然不熟悉 flutter,所以我无法将这里许多已回答问题的代码实现到我的代码中。
在此代码中,有 select、印度尼西亚语、英语和俄语三个选项。 我想让下拉菜单在页面显示时具有默认选择的选项。
import 'package:flutter/material.dart';
class EnamPage extends StatefulWidget {
@override
_EnamPageState createState() => _EnamPageState();
}
class _EnamPageState extends State<EnamPage> {
Person selectedPerson;
List<Person> persons = [Person("Indonesian"), Person("English"), Person("Russian")];
List<DropdownMenuItem> generateItems(List<Person> persons) {
List<DropdownMenuItem> items = [];
for (var item in persons) {
items.add(DropdownMenuItem(
child: Text(item.name),
value: item,
));
}
return items;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
Container(
margin: EdgeInsets.all(20),
child: DropdownButton(
isExpanded: true,
value: selectedPerson,
items: generateItems(persons),
onChanged: (item) {
setState(() {
selectedPerson = item;
});
})),
Text((selectedPerson != null)
? selectedPerson.name
: "Silakan Pilih")
],
),
);
}
}
class Person {
String name;
Person(this.name);
}
只需在 initState() 调用中将您的“selectedPerson”设置为您想要的值(这是您在小部件第一次渲染之前预定义值的地方):
import 'package:flutter/material.dart';
class EnamPage extends StatefulWidget {
@override
_EnamPageState createState() => _EnamPageState();
}
class _EnamPageState extends State<EnamPage> {
List<Person> persons = [Person("Indonesian"), Person("English"), Person("Russian")];
Person selectedPerson;
@override
void initState() {
super.initState();
selectedPerson = persons.first; // Set to the first Person
}
List<DropdownMenuItem> generateItems(List<Person> persons) {
List<DropdownMenuItem> items = [];
for (var item in persons) {
items.add(DropdownMenuItem(
child: Text(item.name),
value: item,
));
}
return items;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
Container(
margin: EdgeInsets.all(20),
child: DropdownButton(
isExpanded: true,
value: selectedPerson,
items: generateItems(persons),
onChanged: (item) {
setState(() {
selectedPerson = item;
});
})),
Text((selectedPerson != null)
? selectedPerson.name
: "Silakan Pilih")
],
),
);
}
}
class Person {
String name;
Person(this.name);
}
感谢来自 Telegram Group 印度尼西亚 Flutter 的 Deny Ocr
import 'package:flutter/material.dart';
class EnamPage extends StatefulWidget {
@override
_EnamPageState createState() => _EnamPageState();
}
class _EnamPageState extends State<EnamPage> {
Person initialPersonValue = Person("Indonesian");
Person selectedPerson;
List<Person> persons = [
Person("Indonesian"),
Person("English"),
Person("Brazillian"),
];
getSelectedPerson() {
var currentPerson = persons
.where((person) => person.name == initialPersonValue.name)
.toList();
return currentPerson[0];
}
List<DropdownMenuItem> generateItems(List<Person> persons) {
List<DropdownMenuItem> items = [];
for (var item in persons) {
items.add(DropdownMenuItem(
child: Text(item.name),
value: item,
));
}
return items;
}
@override
initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
Container(
margin: EdgeInsets.all(20),
child: DropdownButton(
isExpanded: true,
value: getSelectedPerson(),
items: generateItems(persons),
onChanged: (item) {
setState(() {
selectedPerson = item;
});
})),
Text((selectedPerson != null) ? selectedPerson.name : "Silakan Pilih")
],
),
);
}
}
class Person {
final String name;
Person(this.name);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.