我想将DropdownButton
移至Step
类,并在Stepper
中使用字母,但是在下面出现此错误:
package:flutter / src / material / dropdown.dart':断言失败:行 560 pos 15:“项目== null || items.isEmpty ||值== null || items.where(((DropdownMenuItem item)=> item.value == value).length == 1':不正确。
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
TextStyle itemTextStyle = TextStyle(fontSize: 14);
TextStyle titleTextStyle = TextStyle(fontSize: 20);
class OrderStep {
var index, value, title, hint;
final mapElements;
bool isActive = true;
Step step;
OrderStep(@required this.value, @required this.index, @required this.title,
@required this.mapElements,
{this.hint = ''})
: assert(value != null),
assert(index != null),
assert(title != null) {
setStep();
}
setStep() {
step = Step(
title: Text(
title,
style: titleTextStyle,
),
isActive: isActive,
content: OrderDropDownButton(this.value, this.mapElements));
}
}
class OrderDropDownButton extends StatefulWidget {
var value;
var mapElements;
OrderDropDownButton(this.value, this.mapElements) : assert(value != null), assert(mapElements != null);
@override
OrderDropDownButtonState createState() => OrderDropDownButtonState();
}
class OrderDropDownButtonState extends State<OrderDropDownButton> {
List<DropdownMenuItem> items = [];
DropdownButton ddButton = DropdownButton(items: null, onChanged: null);
addDropDownItem(String text, String value) {
items.add(DropdownMenuItem(
child: Text(
text,
style: itemTextStyle,
),
value: value));
}
buildDropDownItems() {
widget.mapElements.forEach((t, v) => {addDropDownItem(t, v)});
}
setDropdownButton() {
ddButton = DropdownButton(
value: widget.value,
isDense: true,
isExpanded: true,
hint: Text("Wybierz danie"),
items: [
DropdownMenuItem(
child: Text("Subway1"),
value: "Subway1",
),
DropdownMenuItem(
child: Text("Subway2"),
value: "Subway2",
),
DropdownMenuItem(
child: Text("Subway3"),
value: "Subway3",
),
DropdownMenuItem(
child: Text("Subway4"),
value: "Subway4",
),
DropdownMenuItem(
child: Text("Subway4"),
value: "Subway5",
)
],
onChanged: (newValue) {
setState(() {
widget.value = newValue;
});
});
}
@override
Widget build(BuildContext context) {
setDropdownButton();
return ddButton;
}
}
答案 0 :(得分:0)
请确保所选值包括在项目中。 在您的情况下,widget.value不会使用列表中的任何值初始化。
我希望有帮助