У меня проблема с пользовательской панелью навигации.Я не могу изменить страницу в теле.Я положил 4 разных текста для испытаний.Позже я хочу иметь виджеты Somo с различными страницами._BuildItem находится в другом виджете, но на той же странице.
class InicioPage extends StatefulWidget {
final int selectedIndex = 0;
@override
State<StatefulWidget> createState() {
return InicioPageState(selectedIndex);
}
}
class InicioPageState extends State<InicioPage> {
int selectedIndex;
InicioPageState(this.selectedIndex);
final pages = [Text('page 0'),Text('page 1'), ];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 1,
title: Text('Title of App'), ),
bottomNavigationBar: BottomNavBar(selectedIndex),
body: pages[selectedIndex], ); } }
Вот панель навигации.Я вырезал некоторые части, которые не важны, потому что символы.
class BottomNavBar extends StatefulWidget {
final int selectedIndex;
BottomNavBar(this.selectedIndex);
@override
State<StatefulWidget> createState() {
return BottomNavBarState(selectedIndex);
},}
class BottomNavBarState extends State<BottomNavBar> {
int selectedIndex;
BottomNavBarState(this.selectedIndex);
List<NavigationItem> items = [
NavigationItem(Icon(Icons.home), Text('Home')),
NavigationItem(Icon(Icons.location_city), Text('Props')),
];
@override
Widget build(BuildContext context) {
return Container(
child: Row(
children: items.map((item) { var itemIndex = items.indexOf(item);
return GestureDetector( onTap: () { setState(() {
selectedIndex = itemIndex;
}); },
child: _buildItem(item, selectedIndex == itemIndex),
);
}).toList(),
));
}
}