|
|
@ -1,6 +1,5 @@ |
|
|
|
import 'package:flutter/material.dart'; |
|
|
|
import 'package:flutter/material.dart'; |
|
|
|
import 'package:provider/provider.dart'; |
|
|
|
import 'package:provider/provider.dart'; |
|
|
|
import 'package:win_text_editor/modules/content_search/controllers/content_search_controller.dart'; |
|
|
|
|
|
|
|
import 'package:win_text_editor/shared/components/text_editor.dart'; |
|
|
|
import 'package:win_text_editor/shared/components/text_editor.dart'; |
|
|
|
import 'package:win_text_editor/framework/controllers/tab_manager.dart'; |
|
|
|
import 'package:win_text_editor/framework/controllers/tab_manager.dart'; |
|
|
|
import 'package:win_text_editor/framework/models/tab_model.dart'; |
|
|
|
import 'package:win_text_editor/framework/models/tab_model.dart'; |
|
|
@ -17,19 +16,9 @@ class TabView extends StatefulWidget { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class _TabViewState extends State<TabView> { |
|
|
|
class _TabViewState extends State<TabView> { |
|
|
|
// 缓存已创建的视图 |
|
|
|
|
|
|
|
final Map<String, Widget> _viewCache = {}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@override |
|
|
|
@override |
|
|
|
Widget build(BuildContext context) { |
|
|
|
Widget build(BuildContext context) { |
|
|
|
return Column( |
|
|
|
return Column(children: [_buildTabBar(context), Expanded(child: _buildTabContent())]); |
|
|
|
children: [ |
|
|
|
|
|
|
|
// 选项卡标签栏 |
|
|
|
|
|
|
|
_buildTabBar(context), |
|
|
|
|
|
|
|
// 选项卡内容区 |
|
|
|
|
|
|
|
Expanded(child: _buildTabContent()), |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Widget _buildTabBar(BuildContext context) { |
|
|
|
Widget _buildTabBar(BuildContext context) { |
|
|
@ -60,13 +49,13 @@ class _TabViewState extends State<TabView> { |
|
|
|
index: activeIndex, |
|
|
|
index: activeIndex, |
|
|
|
children: |
|
|
|
children: |
|
|
|
widget.tabs.map((tab) { |
|
|
|
widget.tabs.map((tab) { |
|
|
|
final controller = tabManager.getController<ContentSearchController>(tab.id); |
|
|
|
final controller = tabManager.getController<ChangeNotifier>(tab.id); |
|
|
|
return KeyedSubtree(key: ValueKey(tab.id), child: _buildTabItem(tab, controller)); |
|
|
|
return KeyedSubtree(key: ValueKey(tab.id), child: _buildTabItem(tab, controller)); |
|
|
|
}).toList(), |
|
|
|
}).toList(), |
|
|
|
); |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Widget _buildTabItem(AppTab tab, ContentSearchController? controller) { |
|
|
|
Widget _buildTabItem(AppTab tab, ChangeNotifier? controller) { |
|
|
|
switch (tab.type) { |
|
|
|
switch (tab.type) { |
|
|
|
case 'content_search': |
|
|
|
case 'content_search': |
|
|
|
return ContentSearchView(tabId: tab.id, controller: controller); |
|
|
|
return ContentSearchView(tabId: tab.id, controller: controller); |
|
|
|