The main page has many children widgets. When searching, SearchWidget is shown, otherwise DashletsWidget is shown.
DashletsWidget has TabController. TabController is kept in the main page, so that active tab is not reset after searching.
DashletsWidget has a dashlet setting pane, which might change number of tabs.
DashletsWidget(ValueNotifier<int> dashletCount, TabController controller) use ValueNotifier to let re-create controller to the parent: . While re-creating, the old TabController cannot be disposed reliably, so let just de-reference without disposing. It is kind-of-work, but so un-natural. Is there a good pattern to update TabController.length.