我正在尝试将 DropdownButton 小部件添加到我的应用中。
这是我的应用程序代码
import 'package:flutter/material.dart';
void main()
{
runApp(MaterialApp(
home: Home(),
));
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
var gadgets = ['Laptop', 'Cell-phone', 'Drone', 'earbuds', 'walkman'];
var _currentGadgets = 'Gadgets';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Dropdown Button'),
centerTitle: true,
),
body: Column(
children: [
DropdownButton(
items: gadgets.map((e){
return DropdownMenuItem(
value: e,
child: Text(e),
);
}).toList(),
onChanged: (String userchoice){
setState(() {
this._currentGadgets = userchoice;
});
},
value: _currentGadgets,
),
],
),
);
}
}
当我尝试执行此代码时出现此错误 The argument type 'void Function(String)' can't be assigned to the parameter type 'void Function(String?)?'.
我该如何解决此问题?我是颤振的新手,过去 2 天我一直被困在这段代码中。请帮忙。
答案 0 :(得分:0)
您得到的错误来自空安全,String?
类型意味着它可以是 String
或 null
,但您的参数只接受 {{1} },没有String
。
为此,您可以通过添加 ! 来“强制”使用“非空”变量。在变量的末尾,但这样做时要小心。
null
您可以在官方文档中了解有关空安全语法和原则的更多信息:https://flutter.dev/docs/null-safety。
https://api.flutter.dev/flutter/material/DropdownButton-class.html。