我有一个使用flutter
和flutter_webview_plugin
库构建的简单Webview应用程序。我正在尝试使用firebase cloud messaging
添加推送通知。当应用程序在后台运行或关闭时,推送通知可以正常工作。如果该应用程序已打开,则我将其配置为显示alert dialog
。但是这部分不起作用。
我删除了webview
小部件,而是添加了appBar
小部件,然后热重新加载了该应用程序。 alert dialog
实际上在那里工作正常。 webview
层似乎在alert dialog
层之上。因此,即使alert dialog
确实弹出了,用户也看不到它。
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'dart:io';
import 'package:firebase_messaging/firebase_messaging.dart';
void main() => runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
home: MyApp(),
),
);
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
@override
void initState() {
super.initState();
firebaseCloudMessaging_Listeners();
}
void firebaseCloudMessaging_Listeners() {
_firebaseMessaging.getToken().then((token) {
print(token);
});
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("onMessage: $message");
showDialog(
context: context,
builder: (context) => AlertDialog(
content: ListTile(
title: Text(message['notification']['title']),
subtitle: Text(message['notification']['body']),
),
actions: <Widget>[
FlatButton(
child: Text('Ok'),
onPressed: () => Navigator.of(context).pop(),
),
],
),
);
},
onResume: (Map<String, dynamic> message) async {
print('on resume $message');
},
onLaunch: (Map<String, dynamic> message) async {
print('on launch $message');
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
color: Colors.white,
child: SafeArea(
child: new WebviewScaffold(
url: "https://m.url.co.kr",
hidden: true,
),
),
),
);
}
}
答案 0 :(得分:0)
这对于flutter_webview_plugin包是不可能的,您必须切换到官方webview_flutter才能做到这一点...
flutter_webview_plugin开发人员还会向您显示此警告消息:
警告:Web视图未集成在小部件树中,它是颤动视图之上的本机视图。您将无法使用小吃店,对话框...
祝你好运