improved tab handling by id
This commit is contained in:
@@ -8,35 +8,34 @@ part 'web_view.g.dart';
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
class WebViewTabController extends _$WebViewTabController {
|
||||
late Map<Key, WebView> _webViewTabs;
|
||||
late Map<String, WebView> _webViewTabs;
|
||||
|
||||
@override
|
||||
WebView? build() {
|
||||
_webViewTabs = ref.watch(webViewRepositoryProvider);
|
||||
return (stateOrNull != null)
|
||||
? _webViewTabs[stateOrNull!.page.value.key] ??
|
||||
_webViewTabs.values.lastOrNull
|
||||
? _webViewTabs[stateOrNull!.tabId] ?? _webViewTabs.values.lastOrNull
|
||||
: null;
|
||||
}
|
||||
|
||||
void showTab(Key? key) {
|
||||
state = (key != null) ? _webViewTabs[key] : null;
|
||||
void showTab(String? id) {
|
||||
state = (id != null) ? _webViewTabs[id] : null;
|
||||
}
|
||||
}
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
class WebViewRepository extends _$WebViewRepository {
|
||||
@override
|
||||
Map<Key, WebView> build() {
|
||||
Map<String, WebView> build() {
|
||||
return stateOrNull ?? {};
|
||||
}
|
||||
|
||||
void addTab(WebView webView) {
|
||||
state = {...state, webView.page.value.key: webView};
|
||||
state = {...state, webView.tabId: webView};
|
||||
}
|
||||
|
||||
void closeTab(Key key) {
|
||||
state = Map.of(state)..remove(key);
|
||||
void closeTab(String id) {
|
||||
state = Map.of(state)..remove(id);
|
||||
}
|
||||
|
||||
void closeAllTabs() {
|
||||
|
||||
@@ -7,7 +7,7 @@ part of 'web_view.dart';
|
||||
// **************************************************************************
|
||||
|
||||
String _$webViewTabControllerHash() =>
|
||||
r'45eaa10e6032b04717e8ba08b8dce8ed22764f46';
|
||||
r'3f1d7460295c6399382881ee56c4ed7f1fd5fe03';
|
||||
|
||||
/// See also [WebViewTabController].
|
||||
@ProviderFor(WebViewTabController)
|
||||
@@ -23,12 +23,12 @@ final webViewTabControllerProvider =
|
||||
);
|
||||
|
||||
typedef _$WebViewTabController = Notifier<WebView?>;
|
||||
String _$webViewRepositoryHash() => r'6732fd1b8a465073b599f64d6710a61cd605c779';
|
||||
String _$webViewRepositoryHash() => r'dae5e1527ab4ad27f6a882fb63d8e88cd812b20b';
|
||||
|
||||
/// See also [WebViewRepository].
|
||||
@ProviderFor(WebViewRepository)
|
||||
final webViewRepositoryProvider =
|
||||
NotifierProvider<WebViewRepository, Map<Key, WebView>>.internal(
|
||||
NotifierProvider<WebViewRepository, Map<String, WebView>>.internal(
|
||||
WebViewRepository.new,
|
||||
name: r'webViewRepositoryProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
@@ -38,6 +38,6 @@ final webViewRepositoryProvider =
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$WebViewRepository = Notifier<Map<Key, WebView>>;
|
||||
typedef _$WebViewRepository = Notifier<Map<String, WebView>>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
|
||||
Reference in New Issue
Block a user