如何解决默认选中的DropdownMenuItem Flutter
如何设置在DropdownMenuItem中选择的默认设置?
由于我仍然不熟悉抖动,因此无法将此处回答的许多问题的代码实现到我的代码中。
在此代码中,有三个选项可供选择:印度尼西亚语,英语和俄语。当页面显示时,我想使下拉菜单具有默认选择的选项。
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);
}
,
感谢电报集团Flutter Indonesia的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("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),));
}
return items;
}
@override
initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
Container(
margin: EdgeInsets.all(20),value: getSelectedPerson(),Text((selectedPerson != null) ? selectedPerson.name : "Silakan Pilih")
],);
}
}
class Person {
final String name;
Person(this.name);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。