Когда я закрываю приложение примерно на минуту, а затем перемещаю его в фоновый режим перед возобновлением, виджет InAppWebView покрывается белым наложением или просто не отображает веб-содержимое на экране. Я все еще могу взаимодействовать со страницей, которая была загружена до приостановки приложения, и слышу звуковые эффекты, которые воспроизводятся на сайте, так что он определенно все еще каким-то образом активен. Я просто не понимаю, как мне заставить его ПОКАЗАТЬ страницу, когда я возобновляю работу приложения. Консоль отладки не показывает ничего необычного, когда я снова открываю приложение после приостановки; это тот же результат, что и тогда, когда InAppWebView был фактически видим.
Я попытался создать базовую реализацию InAppWebView в своем приложении, используя другой URL-адрес, запустив flutter clean, запустив flutter pub. обновление, запуск флаттера паба с понижением версии, но проблема все еще возникает. Вот код страницы.
class CustomWebView extends StatefulWidget {
final String url;
CustomWebView({required this.url});
@override
_CustomWebViewState createState() => _CustomWebViewState();
}
class _CustomWebViewState extends State
with SingleTickerProviderStateMixin, WidgetsBindingObserver {
bool _isLoading = true; // Initially, webview is loading
late InAppWebViewController webcontroller;
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return InAppWebView(
key: Key('webview'),
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
transparentBackground: true,
useShouldOverrideUrlLoading: true,
supportZoom: true,
),
android: AndroidInAppWebViewOptions(
builtInZoomControls: true,
loadWithOverviewMode: true,
useWideViewPort: true,
),
ios: IOSInAppWebViewOptions(
disableInputAccessoryView: true,
allowsInlineMediaPlayback: true,
),
),
initialUrlRequest: URLRequest(url: Uri.parse(widget.url)),
shouldOverrideUrlLoading: (controller, navigationAction) async {
var uri = navigationAction.request.url!;
if (uri.toString().contains('logout')) {
logOut(context);
return NavigationActionPolicy.CANCEL;
}
if (uri.toString().contains('whatsapp')) {
var shareText = await getTextParam(uri.toString());
Share.share(shareText!);
return NavigationActionPolicy.CANCEL;
}
if (uri.toString().contains('?process_s=3')) {
var status = await Permission.storage.status;
if (!status.isGranted) {
status = await Permission.storage.request();
}
if (status.isGranted) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => GenerateQRPage(
url: '',
)));
}
return NavigationActionPolicy.CANCEL;
}
return NavigationActionPolicy.ALLOW;
},
onWebViewCreated: (InAppWebViewController controller) {
webcontroller = controller;
},
onLoadStop: (controller, url) async {},
);
}
}
Подробнее здесь: https://stackoverflow.com/questions/780 ... roid-and-i
Белый экран в inappwebview после возобновления работы приложения из фонового режима на Android и iOS? ⇐ Android
Форум для тех, кто программирует под Android
1732386579
Anonymous
Когда я закрываю приложение примерно на минуту, а затем перемещаю его в фоновый режим перед возобновлением, виджет InAppWebView покрывается белым наложением или просто не отображает веб-содержимое на экране. Я все еще могу взаимодействовать со страницей, которая была загружена до приостановки приложения, и слышу звуковые эффекты, которые воспроизводятся на сайте, так что он определенно все еще каким-то образом активен. Я просто не понимаю, как мне заставить его ПОКАЗАТЬ страницу, когда я возобновляю работу приложения. Консоль отладки не показывает ничего необычного, когда я снова открываю приложение после приостановки; это тот же результат, что и тогда, когда InAppWebView был фактически видим.
Я попытался создать базовую реализацию InAppWebView в своем приложении, используя другой URL-адрес, запустив flutter clean, запустив flutter pub. обновление, запуск флаттера паба с понижением версии, но проблема все еще возникает. Вот код страницы.
class CustomWebView extends StatefulWidget {
final String url;
CustomWebView({required this.url});
@override
_CustomWebViewState createState() => _CustomWebViewState();
}
class _CustomWebViewState extends State
with SingleTickerProviderStateMixin, WidgetsBindingObserver {
bool _isLoading = true; // Initially, webview is loading
late InAppWebViewController webcontroller;
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return InAppWebView(
key: Key('webview'),
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
transparentBackground: true,
useShouldOverrideUrlLoading: true,
supportZoom: true,
),
android: AndroidInAppWebViewOptions(
builtInZoomControls: true,
loadWithOverviewMode: true,
useWideViewPort: true,
),
ios: IOSInAppWebViewOptions(
disableInputAccessoryView: true,
allowsInlineMediaPlayback: true,
),
),
initialUrlRequest: URLRequest(url: Uri.parse(widget.url)),
shouldOverrideUrlLoading: (controller, navigationAction) async {
var uri = navigationAction.request.url!;
if (uri.toString().contains('logout')) {
logOut(context);
return NavigationActionPolicy.CANCEL;
}
if (uri.toString().contains('whatsapp')) {
var shareText = await getTextParam(uri.toString());
Share.share(shareText!);
return NavigationActionPolicy.CANCEL;
}
if (uri.toString().contains('?process_s=3')) {
var status = await Permission.storage.status;
if (!status.isGranted) {
status = await Permission.storage.request();
}
if (status.isGranted) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => GenerateQRPage(
url: '',
)));
}
return NavigationActionPolicy.CANCEL;
}
return NavigationActionPolicy.ALLOW;
},
onWebViewCreated: (InAppWebViewController controller) {
webcontroller = controller;
},
onLoadStop: (controller, url) async {},
);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78032638/white-screen-on-inappwebview-after-resuming-app-from-background-on-android-and-i[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия