Flutter静态列表DropdownButton报错原因咨询
_trxnStatus初始值与选项不匹配
如果你定义的_trxnStatus初始值不在下拉选项列表里(比如初始是null,但代码里用的是DropdownButton<String>而非可空类型,或者初始值是列表外的字符串),Flutter就会报错——因为DropdownButton要求value必须是选项列表里的某一项,或者为null(这时候得确保类型支持可空)。
解决方式:- 要是想默认显示提示文本(hint),就把
_trxnStatus定义成String? _trxnStatus;并初始化为null,同时把DropdownButton<String>改成DropdownButton<String?>; - 要是想默认选中某个选项,直接把
_trxnStatus的初始值设成列表里的某一项,比如String _trxnStatus = 'Select Status';。
- 要是想默认显示提示文本(hint),就把
类型不兼容问题
onChanged回调里的_value是String?类型(因为用户可能取消选择),如果_trxnStatus被定义成非可空的String,直接赋值肯定会报错。
解决方式:- 把
_trxnStatus的类型改成String?; - 或者确认
_value永远不为空的情况下,用非空断言赋值:_trxnStatus = _value!;(不推荐随意用断言)。
- 把
未在StatefulWidget中使用setState
如果这段代码写在StatelessWidget里,调用setState会直接报错,因为setState只能在StatefulWidget对应的State类里用。
解决方式:确保代码所在的Widget是StatefulWidget,所有状态更新逻辑都放在对应的State类中。
内容的提问来源于stack exchange,提问作者LostTexan
相关产品推荐
相关产品推荐

