fix tab dispose bug, add Key for PageView children
This commit is contained in:
parent
c04168eb73
commit
14f34f589c
@ -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
|
||||
|
@ -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))));
|
||||
}
|
||||
}
|
||||
|
@ -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}}");
|
||||
|
Loading…
x
Reference in New Issue
Block a user