66library ;
77
88import 'package:flutter/material.dart' ;
9- import 'package:flutter_riverpod/flutter_riverpod.dart' ;
10- import 'package:flutter_inappwebview/flutter_inappwebview.dart' ;
119
1210import '../../models/dictionary/dictionary_lookup_result.dart' ;
1311import '../../providers/dictionary/lookup_controller.dart' ;
14- import '../../providers/dictionary/dictionary_settings_provider.dart' ;
15- import '../../services/dictionary/web_dictionary_ad_block_rules.dart' ;
1612import 'ai_dict_result_view.dart' ;
1713import 'local_dict_result_view.dart' ;
1814import 'web_dictionary_view.dart' ;
1915
2016/// 结果分发视图
21- class DictionaryResultView extends ConsumerWidget {
17+ class DictionaryResultView extends StatelessWidget {
2218 /// 当前选中源 id
2319 final String sourceId;
2420
@@ -48,7 +44,7 @@ class DictionaryResultView extends ConsumerWidget {
4844 });
4945
5046 @override
51- Widget build (BuildContext context, WidgetRef ref ) {
47+ Widget build (BuildContext context) {
5248 switch (sourceId) {
5349 case 'local' :
5450 return LocalDictResultView (state: state, word: word);
@@ -60,40 +56,29 @@ class DictionaryResultView extends ConsumerWidget {
6056 onUpgrade: onUpgrade,
6157 );
6258 default :
63- final adFilteringEnabled = ref
64- .watch (dictionarySettingsNotifierProvider)
65- .adFilteringEnabled;
66- final adFilterBlockers = adFilteringEnabled
67- ? webDictionaryCommonAdBlockers
68- : const < ContentBlocker > [];
6959 // 其余源(含全部网页词典 cambridge/oxford/... )走结果子类穷尽 switch
7060 // 兜底——新增结果子类需在此补分支。
7161 if (state case LookupLoaded (: final result)) {
72- return _loadedFallback (result, adFilterBlockers, adFilteringEnabled );
62+ return _loadedFallback (result);
7363 }
7464 return const _Loading ();
7565 }
7666 }
7767
7868 /// sealed 结果穷尽分发(新增源安全网)
79- Widget _loadedFallback (
80- DictionaryLookupResult result,
81- List <ContentBlocker > adFilterBlockers,
82- bool adFilteringEnabled,
83- ) => switch (result) {
69+ Widget _loadedFallback (DictionaryLookupResult result) => switch (result) {
8470 LocalDictResult () => LocalDictResultView (state: state, word: word),
8571 AiDictResult () => AiDictResultView (
8672 state: state,
8773 onRetry: onRetry,
8874 onSignIn: onSignIn,
8975 onUpgrade: onUpgrade,
9076 ),
91- // 切换词典源或过滤开关时重建 WebView,让初始过滤规则立即生效 。
77+ // 查询新词时创建对应的原生 WebView。
9278 WebDictResult (: final sourceId, : final url) => WebDictionaryView (
93- key: ValueKey ('web_${sourceId }_$adFilteringEnabled ' ),
79+ key: ValueKey ('web_${sourceId }_${ url . toString ()} ' ),
9480 sourceId: sourceId,
9581 url: url,
96- contentBlockers: adFilterBlockers,
9782 ),
9883 };
9984}
0 commit comments