Страница запускается с начала при переходе между двумя экранами с помощью BottomTabNavigator
Я новичок в
Flutter
. Я начал новый проект, касающийся социальных сетей. я использовал
BottomTabNavigation
для перехода с главного экрана на экран уведомлений. Теперь проблема в том, что, когда я показываю ленты на домашней странице, я прокручиваю вниз многие сообщения. скажем, я нахожусь в сообщении номер 50. Теперь, когда я нажимаю на уведомление и снова нажимаю на домашнюю страницу, она начинается с начала. Мне нужно, чтобы моя прокрутка оставалась на прежнем месте на каждом главном экране.
Вот мой код для перехода с одной страницы на другую.
class _DefaultLayoutWidgetState extends State<DefaultLayoutWidget> {
final List<Map<String, dynamic>> _pages = [
{'page': PostScreen(), 'title': 'SelfieCorner'},
{'page': NotificationScreen(), 'title': 'Notifications'}
];
int _curruntIndex = 0;
void handleTapEvent(inx) {
setState(() {
_curruntIndex = inx;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PostAppBarWidget(),
body: _pages[_curruntIndex]['page'],
bottomNavigationBar: BottomNavigationBar(
onTap: (index) => handleTapEvent(index),
currentIndex: _curruntIndex,
items: [
BottomNavigationBarItem(
icon: Icon(
Icons.home,
),
title: Text('Home'),
),
BottomNavigationBarItem(
icon: Icon(
Icons.notifications,
),
title: Text('Notifications'),
),
BottomNavigationBarItem(
icon: Icon(
Icons.lock,
),
title: Text('Profile'),
)
],
),
);
}
}
1 ответ
Решение
Рассмотрите возможность использования
IndexedStack
как это. Это спасет
state
предыдущего
widget
при переходе к другому.
body: IndexedStack(.....),
bottomNavigationBar: BottomNavigationBar(
onTap: (index) => handleTapEvent(index),
currentIndex: _curruntIndex,
items: [
BottomNavigationBarItem(
icon: Icon(
Icons.home,
),
title: Text('Home'),
),
BottomNavigationBarItem(
icon: Icon(
Icons.notifications,
),
title: Text('Notifications'),
),
BottomNavigationBarItem(
icon: Icon(
Icons.lock,
),
title: Text('Profile'),
)
],
),