为什么下拉按钮在Flutter中不起作用?

pnwntuvh  于 6个月前  发布在  Flutter
关注(0)|答案(2)|浏览(70)

我想在flutter中做一个简单的下拉按钮。我检查了所有内容,我看了教程,我只是得到了一个错误,我根本不理解它。我真的不知道该怎么办.我上传我的错误的图像在这里。我是新来的flutter。请帮助我。谢谢。
100d1x

的字符串
这是我的全部代码:

import "package:flutter/material.dart";

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

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

class MyPage extends StatefulWidget {
  MyPage({super.key});

  @override
  State<MyPage> createState() => _Example();
}

class _Example extends State<MyPage> {
  List<String> items = ['small', 'medium', 'large', 'extra-large'];
  String? selectedItem = 'samll';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('HDBOOKS'),
        ),
        body: DropdownButton(
          value: selectedItem,
          items: items
              .map((e) => DropdownMenuItem(value: e, child: Text(e)))
              .toList(),
          onChanged: (item) => setState(() {
            selectedItem = item!;
          }),
        ));
  }
}

字符串
这是一个下拉按钮的产品大小,我只是希望不要得到这些错误,我甚至不明白他们.:(

unftdfkk

unftdfkk1#

您在String? selectedItem = **'samll'**;行中有一个与可用选项不匹配的拼写错误。下面是经过一些改进后的代码

import "package:flutter/material.dart";

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

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

class MyPage extends StatefulWidget {
  MyPage({super.key});

  @override
  State<MyPage> createState() => _Example();
}

class _Example extends State<MyPage> {
  List<String> items = ['small', 'medium', 'large', 'extra-large'];
  String? selectedItem = 'small';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('HDBOOKS'),
        ),
        body: DropdownButton<String>(
          value: selectedItem,
          items: items.map<DropdownMenuItem<String>>((String value) {
            return DropdownMenuItem<String>(
              value: value,
              child: Text(
                value,
                style: TextStyle(fontSize: 30),
              ),
            );
          }).toList(),
          onChanged: (String? newValue) => setState(() {
            selectedItem = newValue!;
          }),
        ));
  }
}

字符串

7kjnsjlb

7kjnsjlb2#

您遇到的错误表明提供给DropdownButton的值与项目列表中的值不匹配。在您的情况下,问题是selectedItem的初始值中的拼写错误。它被设置为samll而不是small
像这样更正值

String? selectedItem = 'small';

字符串

相关问题