#flutter #flutter-dependencies #flutter-navigation #flutter-routes
#flutter #flutter-зависимости #flutter-навигация #flutter-маршруты
Вопрос:
Я новичок 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'),
)
],
),