Переопределение свойства класса flutter только в определенных средах

#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. Спасибо за проверку — попробую и посмотрю, сработает ли это