fluttercommunity / fluttercommunity/flutter_webview_plugin

Event listeners stops working after another plugin initialization

Abierto
#550 16 comentarios 8 reacciones 0 asignados Ver en GitHub
bug needs investigation
Lenguaje dominante
Java
Estrellas
1.5k
Forks
938
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

## System info

Issue occurs on: Android
Plugin version: 0.3.7
Flutter doctor output:

```
[✓] Flutter (Channel stable, v1.7.8+hotfix.4, on Linux, locale en_US.UTF-8)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Android Studio (version 3.5)
[!] Connected device
! No devices available

! Doctor found issues in 1 category.
```

## Steps to Reproduce

1. Use webview plugin with `onUrlChanged` listener attached
2. Add [android_alarm_manager](https://pub.dev/packages/android_alarm_manager) or [workmanager](https://pub.dev/packages/workmanager) plugin to your project
3. Initialize [android_alarm_manager](https://pub.dev/packages/android_alarm_manager) or [workmanager](https://pub.dev/packages/workmanager) and create an alrarm or task.

`main.dart` example:
```dart
...
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'package:workmanager/workmanager.dart' as workManager;

...
void callbackDispatcher() {
workManager.Workmanager.executeTask((backgroundTask) {
print("Native called background task: $backgroundTask"); //simpleTask will be emitted here.
return Future.value(true);
});
}

void main() async {
FlutterError.onError = (errorDetails) {
Logger.e( "${errorDetails.exception}");
if (Logger.isInDebugMode) {
FlutterError.dumpErrorToConsole(errorDetails);
}
};

runZoned(() {
workManager.Workmanager.initialize(
callbackDispatcher,
isInDebugMode: true
);
workManager.Workmanager.registerPeriodicTask("1", "simpleTask", frequency: Duration(hours: 1)); //Comment this line to make webview events work
runApp(new HAClientApp());

}, onError: (error, stack) {
Logger.e("$error");
Logger.e("$stack");
if (Logger.isInDebugMode) {
debugPrint("$stack");
}
});
}

class HAClientApp extends StatelessWidget {

@override
Widget build(BuildContext context) {
return new MaterialApp(
title: "Application",
theme: new ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: "/",
routes: {
"/": (context) => MainPage(title: 'HA Client'),
"/login": (context) => WebviewScaffold(
url: "${ConnectionManager().oauthUrl}",
appBar: new AppBar(
title: new Text("Login"),
),
),
},
);
}
}
...
```
Webview calling somewhere in code:
```dart
final flutterWebviewPlugin = new FlutterWebviewPlugin();
flutterWebviewPlugin.onUrlChanged.listen((String url) {
print("Url changed to: $url");
});
Navigator.of(context).pushNamed('/login');
```
Comment `workManager.Workmanager.registerPeriodicTask` and webview `onUrlChanged` will start working. Also need to mention that [android_alarm_manager](https://pub.dev/packages/android_alarm_manager) and [workmanager](https://pub.dev/packages/workmanager) register itself in java application class. For example:
```java
package com.keyboardcrumbs.hassclient;

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import be.tramckrijte.workmanager.WorkmanagerPlugin;

public class Application extends FlutterApplication implements PluginRegistrantCallback {
@Override
public void onCreate() {
super.onCreate();
WorkmanagerPlugin.setPluginRegistrantCallback(this);
}

@Override
public void registerWith(PluginRegistry registry) {
GeneratedPluginRegistrant.registerWith(registry);
}
}
```
## Logs

No errors in log

```
$ flutter doctor -v
[✓] Flutter (Channel stable, v1.7.8+hotfix.4, on Linux, locale en_US.UTF-8)
• Flutter version 1.7.8+hotfix.4 at /home/estevez/sdk/flutter
• Framework revision 20e59316b8 (8 weeks ago), 2019-07-18 20:04:33 -0700
• Engine revision fee001c93f
• Dart version 2.4.0


[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at /home/estevez/Android/Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 29.0.2
• Java binary at: /home/estevez/bin/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
• All Android licenses accepted.

[✓] Android Studio (version 3.5)
• Android Studio at /home/estevez/bin/android-studio
• Flutter plugin version 39.0.3
• Dart plugin version 191.8423
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[!] Connected device
! No devices available

! Doctor found issues in 1 category.
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.