flutter - 如何在 IndexedStack 中重建页面
问题描述
我有两个页面,一个是您查看一堆电影的页面,您可以在其中喜欢堆栈顶部的电影并移至下一个页面 PAGE A,第二个页面在列表PAGE中显示喜欢的电影乙。
每次我喜欢或不喜欢一部电影时,我都可以去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 使用一个包,但这应该不是问题。
解决方案
从您的页面列表中删除该页面并在同一索引处再次添加它:
onTap: (index) {
_pages.removeAt(1);
_pages.insert(1, LikedMoviesPage());
setState(() => pageIndex = index);
},
推荐阅读
- vb.net - vb.net 文件夹中的注释文件
- winforms - 在 Windows 10 上的 Visual Studio 2017 调试期间无法通过 Alt + Tab 找到 Windows 窗体
- python - 使用 Python 命令运行:python,ImportError: No module named pyproj
- javascript - Google 语音转文本 API 示例代码将无法运行
- rust - Rust 相当于 Swift 对协议的扩展方法?
- docker - Docker 与 ubuntu 用户共享文件权限
- http - 如何在 Angular 6 中使用 etag 实现缓存?
- uwp - UWP 更改 StorageFile 的缩略图
- angular - 为什么 Angular 代理服务器将原始 url 复制到请求 url?
- user-interface - 如何在 Flutter 中进行高级 UI 设计