Я делаю приложение Flutter, используя шаблон поставщика. И я получаю нулевую ошибку при запуске своего приложения.
button_data.dart выглядит так.
class ButtonData extends ChangeNotifier {
List<Button> _buttons = [
Button(
type: "A",
numberone: "1",
numbertwo: "2",
numberthree: "3",
),
Button(
key: "B",
numberone: "A",
numbertwo: "B",
numberthree: "C",
),
];
Button _selectedButton;
List<Button> get buttons => _buttons;
Button get selectedButton => _selectedButton;
void setSelectedItem(Button s) {
_selectedButton = s;
notifyListeners();
}
Button getType(String value) {
return _buttons
.where((button) => button.type == value).first;
} // it is no use...
}
И я хочу, чтобы эта кнопка отображалась незаметно при переключении типа.
new Row(children: [
buildButton(Provider.of<ButtonData>(context).getNumberOne(Provider.of<ButtonData>(context).selectedButton.type)),
buildButton(Provider.of<ButtonData>(context).getNumberTwo(Provider.of<ButtonData>(context).selectedButton.type)),
buildButton(Provider.of<ButtonData>(context).getNumberThree(Provider.of<ButtonData>(context).selectedButton.type)),
])
Но похоже, что ошибка возвращается, поскольку, возможно, я не установил значение по умолчанию. в нем говорится, что «тип получателя» был вызван с нулевым значением «Если возможно, я хочу, чтобы« тип A »был установлен в качестве значения по умолчанию, чтобы на кнопках отображались 1, 2, 3.
Итак, чтобы выяснить нулевую ошибку, я попробовал функцию initState
ниже, но она выдает больше ошибок.
1. There isn't a setter named 'selectedButton' in class 'ButtonData'
2. The expression here has a type of void and therefore can't be used
@override
void initState() {
Provider.of<ButtonData>(context).selectedButton = Provider.of<ButtonData>(context).setSelectedItem(Provider.of<ButtonData>(context).buttons.first);
super.initState();
}
Я пытался найти похожие вопросы, но не могу найти точных вопросов, поэтому задаю вам, ребята.