Я не понимаю, почему во флаттере невозможно иметь такую структуру:
//...
Scaffold(
//...
body: myPage(dataList[index])
)
//...
Где myPage - это класс, который расширяет statefulWidget и возвращает ListView.Требуется параметр данных, который хранится в массиве.Я хочу изменить тело моего скаффолда, когда я изменяю индекс, например, с помощью навигационного ящика.
Я заметил, что:
- , если myPage расширяет statelessWidget, все работает нормально,
- если у меня есть разные классы страниц, которые расширяют statefulWidget, то все отлично работает,
- , но если у меня есть myPage, которому требуются данные для изменения содержимого, то ничего не происходит, оно не меняется, оно остается на первомpage
И да, я использовал метод setState для обновления макета при каждом изменении индекса.
Это ошибка или я что-то пропустил?Если это не ошибка, что я могу сделать в качестве обходного пути?Заранее спасибо
ОБНОВЛЕНИЕ:
Я выкладываю код другой страницы, которая проще, и нет ничего странного, где в любом случае есть эта проблема (я знаю, что на этой странице я мог быиспользуйте виджет без состояния, но он все равно должен работать):
class FirstFragment extends StatefulWidget {
String data;
FirstFragment(this.data);
@override
_FirstFragment createState() => new _FirstFragment(data);
}
class _FirstFragment extends State<FirstFragment>{
String data;
_FirstFragment(this.data);
@override
Widget build(BuildContext context) {
// TODO: implement build
return new Center(
child: new Text(data),
);
}
}