Skip to content

Commit c3691ae

Browse files
authored
Merge pull request #18 from authpass/android-embedding-v2
flutter embedding v2 migration
2 parents 0a3e2ca + 7a48735 commit c3691ae

File tree

6 files changed

+63
-22
lines changed

6 files changed

+63
-22
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.2.0
2+
3+
* Finish flutter embedding v2 migration. #17
4+
15
## 0.1.0
26

37
* null-safety migration (@ValeteTech, PR#16)

android/src/main/java/io/adaptant/labs/flutter_windowmanager/FlutterWindowManagerPlugin.java

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,49 @@
44
import android.os.Build;
55
import android.view.WindowManager;
66

7+
import androidx.annotation.NonNull;
8+
9+
import io.flutter.embedding.engine.plugins.FlutterPlugin;
10+
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
11+
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
12+
import io.flutter.plugin.common.BinaryMessenger;
713
import io.flutter.plugin.common.MethodCall;
814
import io.flutter.plugin.common.MethodChannel;
915
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
1016
import io.flutter.plugin.common.MethodChannel.Result;
1117
import io.flutter.plugin.common.PluginRegistry.Registrar;
1218

1319
/** FlutterWindowManagerPlugin */
14-
public class FlutterWindowManagerPlugin implements MethodCallHandler {
15-
private final Activity activity;
20+
public class FlutterWindowManagerPlugin implements MethodCallHandler, FlutterPlugin, ActivityAware {
21+
private Activity activity;
22+
23+
@SuppressWarnings("unused")
24+
public FlutterWindowManagerPlugin() { }
1625

17-
private FlutterWindowManagerPlugin(Registrar registrar) {
18-
this.activity = registrar.activity();
26+
private FlutterWindowManagerPlugin(Activity activity) {
27+
this.activity = activity;
1928
}
2029

2130
/** Plugin registration. */
31+
@Deprecated
2232
public static void registerWith(Registrar registrar) {
23-
final MethodChannel channel = new MethodChannel(registrar.messenger(), "flutter_windowmanager");
24-
FlutterWindowManagerPlugin instance = new FlutterWindowManagerPlugin(registrar);
25-
channel.setMethodCallHandler(instance);
33+
new FlutterWindowManagerPlugin(registrar.activity()).registerWith(registrar.messenger());
34+
}
35+
36+
private void registerWith(BinaryMessenger binaryMessenger) {
37+
final MethodChannel channel = new MethodChannel(binaryMessenger, "flutter_windowmanager");
38+
channel.setMethodCallHandler(this);
39+
}
40+
41+
42+
@Override
43+
public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
44+
registerWith(flutterPluginBinding.getBinaryMessenger());
45+
}
46+
47+
@Override
48+
public void onDetachedFromEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
49+
2650
}
2751

2852
/**
@@ -119,4 +143,24 @@ public void onMethodCall(MethodCall call, Result result) {
119143
result.notImplemented();
120144
}
121145
}
146+
147+
@Override
148+
public void onAttachedToActivity(@NonNull ActivityPluginBinding activityPluginBinding) {
149+
activity = activityPluginBinding.getActivity();
150+
}
151+
152+
@Override
153+
public void onDetachedFromActivityForConfigChanges() {
154+
activity = null;
155+
}
156+
157+
@Override
158+
public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding activityPluginBinding) {
159+
onAttachedToActivity(activityPluginBinding);
160+
}
161+
162+
@Override
163+
public void onDetachedFromActivity() {
164+
activity = null;
165+
}
122166
}

example/android/app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,20 @@
77
android:name="flutterEmbedding"
88
android:value="2"/>
99
<activity
10-
android:name=".MainActivity"
10+
android:name="io.flutter.embedding.android.FlutterActivity"
1111
android:launchMode="singleTop"
1212
android:theme="@style/LaunchTheme"
1313
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
1414
android:hardwareAccelerated="true"
1515
android:windowSoftInputMode="adjustResize">
16-
<!-- This keeps the window background of the activity showing
17-
until Flutter renders its first frame. It can be removed if
18-
there is no splash screen (such as the default splash screen
19-
defined in @style/LaunchTheme). -->
20-
<meta-data
21-
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
22-
android:value="true" />
2316
<intent-filter>
2417
<action android:name="android.intent.action.MAIN"/>
2518
<category android:name="android.intent.category.LAUNCHER"/>
2619
</intent-filter>
20+
<meta-data
21+
android:name="io.flutter.embedding.android.NormalTheme"
22+
android:resource="@style/NormalTheme"
23+
/>
2724
</activity>
2825
</application>
2926
</manifest>

example/android/app/src/main/java/io/adaptant/labs/flutter_windowmanager_example/MainActivity.java

Lines changed: 0 additions & 6 deletions
This file was deleted.

example/android/app/src/main/res/values/styles.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@
55
Flutter draws its first frame -->
66
<item name="android:windowBackground">@drawable/launch_background</item>
77
</style>
8+
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
9+
</style>
810
</resources>

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: flutter_windowmanager
22
description: A Flutter plugin for manipulating Android WindowManager LayoutParams.
3-
version: 0.1.0
3+
version: 0.2.0
44
homepage: https://github.com/adaptant-labs/flutter_windowmanager
55
repository: https://github.com/adaptant-labs/flutter_windowmanager
66
issue_tracker: https://github.com/adaptant-labs/flutter_windowmanager/issues

0 commit comments

Comments
 (0)