#flutter #dart
#flutter #dart
Вопрос:
Я новичок в flutter / dart и стиле кодирования ООП в целом. Я использую библиотеку под названием flutter:inappwebview
для отображения веб-просмотров
child: IntrinsicHeight(
child: InAppWebView(
initialUrl: widget.url,
onReceivedServerTrustAuthRequest:
(InAppWebViewController controller,
ServerTrustChallenge challenge) async {
return ServerTrustAuthResponse(
action: ServerTrustAuthResponseAction.PROCEED);
},
),
),
Я хочу переопределить onReceivedServerTrustAuthRequest
свойство только в средах разработки, в противном случае возврат к логике по умолчанию
Есть ли способ, которым я могу достичь этого, или мне нужно создать два разных виджета в целом?
Ответ №1:
Вы можете использовать условные обозначения в своем макете и пакете flutter foundation, чтобы определить, находится ли ваше приложение в режиме отладки. Это будет выглядеть следующим образом:
import 'package:flutter/foundation.dart' as foundation;
child: IntrinsicHeight(
child: InAppWebView(
initialUrl: widget.url,
onReceivedServerTrustAuthRequest: (foundation.kDebugMode) ?
(InAppWebViewController controller, ServerTrustChallenge challenge)
async {
return ServerTrustAuthResponse(
action: ServerTrustAuthResponseAction.PROCEED);
} : null,
),
),
Комментарии:
1. ах, будет ли это резервным вариантом для свойства по умолчанию или оно вернет null в сборках, отличных от dev?
2. Это зависит от того,
InAppWebView
проверяет, равен ли данный параметр null. Если виджет выполняет что-то вродеwidget.onReceivedServerTrustAuthRequest ?? //normal logic
, он должен просто выполнять обычное поведение. Вы можете ввести F12 в VS code в inappwebview и посмотреть, как он обрабатывает параметры. Большинство виджетов проверяют этот способ, хотя я бы попробовал.3. Я только что просмотрел документацию
InAppWebView
. На самом деле, похоже, у этого нет значения по умолчанию, поэтому передача null, на мой взгляд, вообще не изменила бы эффекты.4. Спасибо за проверку — попробую и посмотрю, сработает ли это