Flutterでドロップダウンを実装するには、DropdownButtonを使用します。

まずは、選択した値とリストを作成します。

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  var selectedValue = "orange";
  final lists = <String>["orange", "apple", "strawberry", "banana", "grape"];
}

buildの中にDropdownButtonを作成します。

valueに取得したい値、今回は、selectedValueを入れます。

class _MyHomePageState extends State<MyHomePage> {
  var selectedValue = "orange";
  final lists = <String>["orange", "apple", "strawberry", "banana", "grape"];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: DropdownButton<String>(
          value: selectedValue,
          
        ),
      ),
    );
  }
}

itemsにリスト一覧を指定したいので、listsmapで取得し、DropdownMenuItemで値と表示する内容を設定します。

class _MyHomePageState extends State<MyHomePage> {
  var selectedValue = "orange";
  final lists = <String>["orange", "apple", "strawberry", "banana", "grape"];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: DropdownButton<String>(
          value: selectedValue,
          items: lists
              .map((String list) =>
                  DropdownMenuItem(value: list, child: Text(list)))
              .toList(),
        ),
      ),
    );
  }
}

onChangeに選択後の値をselectedValueに代入し、状態管理します。

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Center(
      child: DropdownButton<String>(
        value: selectedValue,
        items: lists
            .map((String list) =>
                DropdownMenuItem(value: list, child: Text(list)))
            .toList(),
        onChanged: (String? value) {
          setState(() {
            selectedValue = value!;
          });
        },
      ),
    ),
  );
}

では、動作確認します。

画面を確認すると、

image2

初期値であるorangeが表示されています。

orangeをタップすると、

image3

リストが表示されました。

bananaをタップしてみましょう。

image4

bananaを選択することができました。

ブログ一覧