提问人:Hana.HD 提问时间:11/15/2023 更新时间:11/15/2023 访问量:38
为什么 DropDownButton 在 Flutter 中不起作用?
Why DropDownButton doesn't work in Flutter?
问:
我想在 Flutter 中制作一个简单的下拉按钮。我检查了所有内容,观看了教程,只是得到一个我根本不理解的错误.我真的不知道该怎么办......我在这里上传我的错误图像。 我是 Flutter 的新手。请帮帮我。谢谢。
这是我的全部代码:
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!;
}),
));
}
}
这是产品尺寸的下拉按钮,我只是希望不要出现这些我什至不理解的错误...... :(
答:
1赞
Munsif Ali
11/15/2023
#1
遇到的错误表明提供给 DropdownButton 的值与项列表中的值不匹配。在您的例子中,问题是 selectedItem 的初始值中的拼写错误。它设置为 而不是 。samll
small
像这样更正值
String? selectedItem = 'small';
1赞
Andreas Hadjimamas
11/15/2023
#2
您有一个与可用选项不匹配的拼写错误。
下面是现在工作的代码,并进行了一些改进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!;
}),
));
}
}
评论