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) {
|
_ConnectionTabPageState(Map<String, dynamic> params) {
|
||||||
if (params['id'] != null) {
|
if (params['id'] != null) {
|
||||||
tabController.state.value.tabs.add(TabInfo(
|
tabController.add(TabInfo(
|
||||||
key: params['id'],
|
key: params['id'],
|
||||||
label: params['id'],
|
label: params['id'],
|
||||||
selectedIcon: selectedIcon,
|
selectedIcon: selectedIcon,
|
||||||
unselectedIcon: unselectedIcon,
|
unselectedIcon: unselectedIcon,
|
||||||
page: RemotePage(
|
page: RemotePage(
|
||||||
|
key: ValueKey(params['id']),
|
||||||
id: params['id'],
|
id: params['id'],
|
||||||
tabBarHeight:
|
tabBarHeight:
|
||||||
_fullscreenID.value.isNotEmpty ? 0 : kDesktopRemoteTabBarHeight,
|
_fullscreenID.value.isNotEmpty ? 0 : kDesktopRemoteTabBarHeight,
|
||||||
@ -63,8 +64,8 @@ class _ConnectionTabPageState extends State<ConnectionTabPage> {
|
|||||||
label: id,
|
label: id,
|
||||||
selectedIcon: selectedIcon,
|
selectedIcon: selectedIcon,
|
||||||
unselectedIcon: unselectedIcon,
|
unselectedIcon: unselectedIcon,
|
||||||
closable: false,
|
|
||||||
page: RemotePage(
|
page: RemotePage(
|
||||||
|
key: ValueKey(id),
|
||||||
id: id,
|
id: id,
|
||||||
tabBarHeight: _fullscreenID.value.isNotEmpty
|
tabBarHeight: _fullscreenID.value.isNotEmpty
|
||||||
? 0
|
? 0
|
||||||
|
@ -19,13 +19,15 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
tabController.state.value.tabs.add(TabInfo(
|
tabController.add(TabInfo(
|
||||||
key: kTabLabelHomePage,
|
key: kTabLabelHomePage,
|
||||||
label: kTabLabelHomePage,
|
label: kTabLabelHomePage,
|
||||||
selectedIcon: Icons.home_sharp,
|
selectedIcon: Icons.home_sharp,
|
||||||
unselectedIcon: Icons.home_outlined,
|
unselectedIcon: Icons.home_outlined,
|
||||||
closable: false,
|
closable: false,
|
||||||
page: DesktopHomePage()));
|
page: DesktopHomePage(
|
||||||
|
key: const ValueKey(kTabLabelHomePage),
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -59,6 +61,6 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
|
|||||||
label: kTabLabelSettingPage,
|
label: kTabLabelSettingPage,
|
||||||
selectedIcon: Icons.build_sharp,
|
selectedIcon: Icons.build_sharp,
|
||||||
unselectedIcon: Icons.build_outlined,
|
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;
|
static final IconData unselectedIcon = Icons.file_copy_outlined;
|
||||||
|
|
||||||
_FileManagerTabPageState(Map<String, dynamic> params) {
|
_FileManagerTabPageState(Map<String, dynamic> params) {
|
||||||
tabController.state.value.tabs.add(TabInfo(
|
tabController.add(TabInfo(
|
||||||
key: params['id'],
|
key: params['id'],
|
||||||
label: params['id'],
|
label: params['id'],
|
||||||
selectedIcon: selectedIcon,
|
selectedIcon: selectedIcon,
|
||||||
unselectedIcon: unselectedIcon,
|
unselectedIcon: unselectedIcon,
|
||||||
page: FileManagerPage(id: params['id'])));
|
page: FileManagerPage(key: ValueKey(params['id']), id: params['id'])));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -53,7 +53,7 @@ class _FileManagerTabPageState extends State<FileManagerTabPage> {
|
|||||||
label: id,
|
label: id,
|
||||||
selectedIcon: selectedIcon,
|
selectedIcon: selectedIcon,
|
||||||
unselectedIcon: unselectedIcon,
|
unselectedIcon: unselectedIcon,
|
||||||
page: FileManagerPage(id: id)));
|
page: FileManagerPage(key: ValueKey(id), id: id)));
|
||||||
} else if (call.method == "onDestroy") {
|
} else if (call.method == "onDestroy") {
|
||||||
tabController.state.value.tabs.forEach((tab) {
|
tabController.state.value.tabs.forEach((tab) {
|
||||||
print("executing onDestroy hook, closing ${tab.label}}");
|
print("executing onDestroy hook, closing ${tab.label}}");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user