如何在IndexedStack内重建一个页面

4
我有两个页面,一个是借阅电影的页面,你可以在这个页面中喜欢电影并向下滑动到下一部电影,PAGE A;另一个页面将喜欢的电影以列表的形式呈现,PAGE B
每当我喜欢或不喜欢一部电影时,我都可以进入PAGE B并查看我喜欢的电影,但由于我使用了IndexedStack,PAGE B不会重新构建,因此不会显示更新后的列表。
有没有一种方法可以在重新进入PAGE B时重建它?
以下是我的代码:
class HomePage extends StatefulWidget {
  //
  static String id = 'home';
  //
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  //
  List<Widget> _pages = [MovieStackPage(), LikedMoviesPage()];
  int pageIndex = 0;
  //
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: SafeArea(
        child: IndexedStack(
          index: pageIndex,
          children: _pages,
        ),
      ),
      bottomNavigationBar: AnimatedBottomNavigationBar(
        icons: [...],
        iconSize: 25,
        elevation: 50,
        activeIndex: pageIndex,
        leftCornerRadius: 32,
        rightCornerRadius: 32,
        activeColor: User.color,
        inactiveColor: kAppIconGray,
        splashColor: User.color.withOpacity(.3),
        onTap: (index) => setState(() => pageIndex = index),
      ),
    );
  }
}

我正在使用一个BottomNavBar的包,但这不应该是问题。

1个回答

7

将该页面从您的页面列表中删除,并在相同的索引位置再次添加它:

onTap: (index) {
      _pages.removeAt(1);
      _pages.insert(1, LikedMoviesPage());
      setState(() => pageIndex = index);
},

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接