alerttdialog находится ниже веб-просмотра, поэтому пользователь не может видеть alerttdialog - PullRequest
0 голосов
/ 25 июня 2019

У меня есть простое веб-приложение, созданное с помощью библиотек flutter и flutter_webview_plugin.Я пытаюсь добавить push-уведомление с firebase cloud messaging.Push-уведомление работает нормально, когда приложение работает в фоновом режиме или выключено.Если приложение включено, я настроил его так, чтобы оно показывало 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,
          ),
        ),
      ),
    );
  }
}

1 Ответ

0 голосов
/ 28 июня 2019

Это невозможно с пакетом flutter_webview_plugin, вам нужно переключиться на официальный webview_flutter , чтобы сделать это ...

Разработчики flutter_webview_plugin также выдают вам это предупреждающее сообщение:

Предупреждение. Веб-представление не интегрировано в дерево виджетов, оно является собственным представлением поверх представления флаттера.Вы не сможете использовать закусочные, диалоги ...

Удачи

...