fix tab dispose bug, add Key for PageView children

This commit is contained in:
csf 2022-08-26 12:14:14 +08:00
parent c04168eb73
commit 14f34f589c
3 changed files with 11 additions and 8 deletions

View File

@ -30,12 +30,13 @@ class _ConnectionTabPageState extends State<ConnectionTabPage> {
_ConnectionTabPageState(Map<String, dynamic> params) {
if (params['id'] != null) {
tabController.state.value.tabs.add(TabInfo(
tabController.add(TabInfo(
key: params['id'],
label: params['id'],
selectedIcon: selectedIcon,
unselectedIcon: unselectedIcon,
page: RemotePage(
key: ValueKey(params['id']),
id: params['id'],
tabBarHeight:
_fullscreenID.value.isNotEmpty ? 0 : kDesktopRemoteTabBarHeight,
@ -63,8 +64,8 @@ class _ConnectionTabPageState extends State<ConnectionTabPage> {
label: id,
selectedIcon: selectedIcon,
unselectedIcon: unselectedIcon,
closable: false,
page: RemotePage(
key: ValueKey(id),
id: id,
tabBarHeight: _fullscreenID.value.isNotEmpty
? 0

View File

@ -19,13 +19,15 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
@override
void initState() {
super.initState();
tabController.state.value.tabs.add(TabInfo(
tabController.add(TabInfo(
key: kTabLabelHomePage,
label: kTabLabelHomePage,
selectedIcon: Icons.home_sharp,
unselectedIcon: Icons.home_outlined,
closable: false,
page: DesktopHomePage()));
page: DesktopHomePage(
key: const ValueKey(kTabLabelHomePage),
)));
}
@override
@ -59,6 +61,6 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
label: kTabLabelSettingPage,
selectedIcon: Icons.build_sharp,
unselectedIcon: Icons.build_outlined,
page: DesktopSettingPage()));
page: DesktopSettingPage(key: const ValueKey(kTabLabelSettingPage))));
}
}

View File

@ -26,12 +26,12 @@ class _FileManagerTabPageState extends State<FileManagerTabPage> {
static final IconData unselectedIcon = Icons.file_copy_outlined;
_FileManagerTabPageState(Map<String, dynamic> params) {
tabController.state.value.tabs.add(TabInfo(
tabController.add(TabInfo(
key: params['id'],
label: params['id'],
selectedIcon: selectedIcon,
unselectedIcon: unselectedIcon,
page: FileManagerPage(id: params['id'])));
page: FileManagerPage(key: ValueKey(params['id']), id: params['id'])));
}
@override
@ -53,7 +53,7 @@ class _FileManagerTabPageState extends State<FileManagerTabPage> {
label: id,
selectedIcon: selectedIcon,
unselectedIcon: unselectedIcon,
page: FileManagerPage(id: id)));
page: FileManagerPage(key: ValueKey(id), id: id)));
} else if (call.method == "onDestroy") {
tabController.state.value.tabs.forEach((tab) {
print("executing onDestroy hook, closing ${tab.label}}");