页面在使用 BottomTabNavigator 在 2 个屏幕之间导航时开始

Posted

技术标签:

【中文标题】页面在使用 BottomTabNavigator 在 2 个屏幕之间导航时开始【英文标题】:Page started at begin when navigate between 2 screen using BottomTabNavigator 【发布时间】:2021-01-18 06:28:08 【问题描述】:

我是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。它会在移动到另一个时保存之前的widgetstate

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'),
          )
        ],
      ),
IndexedStack Widget Video Tutorial on medium

【讨论】:

以上是关于页面在使用 BottomTabNavigator 在 2 个屏幕之间导航时开始的主要内容,如果未能解决你的问题,请参考以下文章

在 React Native expo 移动应用程序中,BottomTabNavigator 位于顶部而不是底部

React Navigation 导航到没有 BottomTabNavigator 的普通 stackNavigator

如何从 React 导航 BottomTabNavigator 显示底部工作表?

react-native bottomTabNavigator 被Android系统导航栏部分覆盖

react-native 中的 BottomTabNavigator 上方的白线

如何在 React Native 中删除警告