繁体   English   中英

默认选择 DropdownMenuItem Flutter

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM