Я хочу переместить DropdownButton
в Step
класс и использовать его в Stepper
, но я получаю эту ошибку ниже:
пакет: flutter / src / material / dropdown.dart ': ошибочное утверждение: строка 560, позиция 15:' items == null ||items.isEmpty ||значение == ноль ||items.where ((DropdownMenuItem item) => item.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;
}
}