Skip to content

Commit

Permalink
Bug calling platform channel outside main UI
Browse files Browse the repository at this point in the history
  • Loading branch information
andre-paraense committed Feb 11, 2020
1 parent c092f98 commit e42eec3
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.oakam.launchdarkly_flutter;

import android.app.Activity;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;

import androidx.annotation.NonNull;

Expand Down Expand Up @@ -136,11 +139,19 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {

FeatureFlagChangeListener listener = new FeatureFlagChangeListener() {
@Override
public void onFeatureFlagChange(String flagKey) {
Map<String, String> arguments = new HashMap<>();
arguments.put("flagKey",flagKey);

channel.invokeMethod("callbackRegisterFeatureFlagListener",arguments);
public void onFeatureFlagChange(final String flagKey) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Map<String, String> arguments = new HashMap<>();
arguments.put("flagKey",flagKey);
try{
channel.invokeMethod("callbackRegisterFeatureFlagListener",arguments);
}catch (Exception e){
Log.e("FeatureFlagsListener", e.getMessage());
}
}
});
}
};

Expand All @@ -162,11 +173,20 @@ public void onFeatureFlagChange(String flagKey) {

LDAllFlagsListener listener = new LDAllFlagsListener() {
@Override
public void onChange(List<String> flagKeys) {
Map<String, List<String>> arguments = new HashMap<>();
arguments.put("flagKeys",flagKeys);

channel.invokeMethod("callbackAllFlagsListener",arguments);
public void onChange(final List<String> flagKeys) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Map<String, List<String>> arguments = new HashMap<>();
arguments.put("flagKeys",flagKeys);

try{
channel.invokeMethod("callbackAllFlagsListener",arguments);
}catch (Exception e){
Log.e("callAllFlagsListener", e.getMessage());
}
}
});
}
};

Expand Down
6 changes: 3 additions & 3 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ class _MyAppState extends State<MyApp> {
bool _listenerAllFlagsRegistered = false;
LaunchdarklyFlutter launchdarklyFlutter;

String mobileKey = 'mob-6924202b-5eb3-4eb7-b665-0b74c7720960';
String userId = '1';
String flagKey = 'w-0-on-the-app';
String mobileKey = 'YOUR_MOBILE_KEY';
String userId = 'USER_ID';
String flagKey = 'FLAG_KEY';

@override
void initState() {
Expand Down
8 changes: 6 additions & 2 deletions ios/Classes/SwiftLaunchdarklyFlutterPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,9 @@ import LaunchDarkly
LDClient.shared.observe(keys: [flagKey], owner: flagObserverOwner, handler: { (changedFlags) in
if changedFlags[flagKey] != nil {
let flagKeyMap = ["flagKey": flagKey]
FlutterChannel.shared.channel?.invokeMethod("callbackRegisterFeatureFlagListener", arguments: flagKeyMap)
DispatchQueue.main.async {
FlutterChannel.shared.channel?.invokeMethod("callbackRegisterFeatureFlagListener", arguments: flagKeyMap)
}
}
})

Expand Down Expand Up @@ -123,7 +125,9 @@ import LaunchDarkly
allFlagsChanged.append(key)
}
let flagKeyMap = ["flagKeys": allFlagsChanged]
FlutterChannel.shared.channel?.invokeMethod("callbackAllFlagsListener", arguments: flagKeyMap)
DispatchQueue.main.async {
FlutterChannel.shared.channel?.invokeMethod("callbackAllFlagsListener", arguments: flagKeyMap)
}
}

FlutterChannel.shared.listeners[listenerId] = allFlagsObserverOwner;
Expand Down

0 comments on commit e42eec3

Please sign in to comment.