File tree Expand file tree Collapse file tree 7 files changed +39
-13
lines changed
android/src/main/kotlin/com/xraph/plugin/flutter_unity_widget Expand file tree Collapse file tree 7 files changed +39
-13
lines changed Original file line number Diff line number Diff line change @@ -30,6 +30,8 @@ enum class DataStreamEventTypes {
30
30
OnUnityPlayerQuited ,
31
31
OnUnitySceneLoaded ,
32
32
OnUnityMessage ,
33
+ OnViewAttached ,
34
+ OnViewDetached ,
33
35
}
34
36
35
37
class DataStreamHandler : EventChannel .StreamHandler {
Original file line number Diff line number Diff line change @@ -246,18 +246,23 @@ class FlutterUnityWidgetController(
246
246
UnityPlayerUtils .addUnityViewToGroup(view)
247
247
UnityPlayerUtils .focus()
248
248
249
- attached = true
250
-
251
249
if (UnityPlayerUtils .controllers.size >= 2 ) {
252
- for (controller in UnityPlayerUtils .controllers.subList( 0 , UnityPlayerUtils .controllers.size - 1 ) ) {
250
+ for (controller in UnityPlayerUtils .controllers.values ) {
253
251
if (controller.attached) {
254
252
controller.detach()
255
253
}
256
254
}
257
255
}
256
+ attached = true
257
+
258
258
259
259
Handler (Looper .getMainLooper()).post {
260
- methodChannel.invokeMethod(" events#onViewAttached" , null )
260
+ DataStreamEventNotifier .notifier.onNext(
261
+ DataStreamEvent (
262
+ DataStreamEventTypes .OnViewAttached .name,
263
+ viewId,
264
+ )
265
+ )
261
266
}
262
267
}
263
268
@@ -305,7 +310,12 @@ class FlutterUnityWidgetController(
305
310
306
311
private fun detach () {
307
312
Handler (Looper .getMainLooper()).post {
308
- methodChannel.invokeMethod(" events#onViewDetached" , null )
313
+ DataStreamEventNotifier .notifier.onNext(
314
+ DataStreamEvent (
315
+ DataStreamEventTypes .OnViewDetached .name,
316
+ viewId,
317
+ )
318
+ )
309
319
}
310
320
attached = false
311
321
}
Original file line number Diff line number Diff line change @@ -88,6 +88,12 @@ class EventDataPayload {
88
88
case 'OnViewReattached' :
89
89
eventType = UnityEventTypes .OnViewReattached ;
90
90
break ;
91
+ case 'OnViewAttached' :
92
+ eventType = UnityEventTypes .OnViewAttached ;
93
+ break ;
94
+ case 'OnViewDetached' :
95
+ eventType = UnityEventTypes .OnViewDetached ;
96
+ break ;
91
97
}
92
98
93
99
return EventDataPayload (
Original file line number Diff line number Diff line change @@ -87,10 +87,12 @@ class MethodChannelUnityWidget extends UnityWidgetPlatform {
87
87
.add (UnitySceneLoadedEvent (0 , SceneLoaded .fromMap (event.data)));
88
88
break ;
89
89
case UnityEventTypes .OnViewAttached :
90
- _unityStreamController.add (UnityAttachedEvent (0 , event.data));
90
+ _unityStreamController
91
+ .add (UnityAttachedEvent (int .parse ((event.data as String ).split ('-' ).last), event.data));
91
92
break ;
92
93
case UnityEventTypes .OnViewDetached :
93
- _unityStreamController.add (UnityDetachedEvent (0 , event.data));
94
+ _unityStreamController
95
+ .add (UnityDetachedEvent (int .parse ((event.data as String ).split ('-' ).last), event.data));
94
96
break ;
95
97
case UnityEventTypes .OnUnityPlayerReInitialize :
96
98
case UnityEventTypes .OnViewReattached :
Original file line number Diff line number Diff line change @@ -70,8 +70,15 @@ class FlutterUnityMethodChannel extends FlutterUnityPlatform {
70
70
_unityStreamController.add (UnityMessageEvent (0 , payload.data));
71
71
break ;
72
72
case UnityEventTypes .OnUnitySceneLoaded :
73
- _unityStreamController.add (
74
- UnitySceneLoadedEvent (0 , SceneLoaded .fromMap (payload.data)));
73
+ _unityStreamController.add (UnitySceneLoadedEvent (0 , SceneLoaded .fromMap (payload.data)));
74
+ break ;
75
+ case UnityEventTypes .OnViewAttached :
76
+ _unityStreamController
77
+ .add (UnityAttachedEvent (int .parse ((payload.data as String ).split ('-' ).last), payload.data));
78
+ break ;
79
+ case UnityEventTypes .OnViewDetached :
80
+ _unityStreamController
81
+ .add (UnityDetachedEvent (int .parse ((payload.data as String ).split ('-' ).last), payload.data));
75
82
break ;
76
83
case UnityEventTypes .OnUnityPlayerReInitialize :
77
84
case UnityEventTypes .OnViewReattached :
Original file line number Diff line number Diff line change @@ -32,10 +32,12 @@ class MobileUnityWidgetController extends UnityWidgetController {
32
32
int id, MobileUnityWidgetState unityWidgetState) async {
33
33
await UnityWidgetPlatform .instance.init (id);
34
34
FlutterUnityController .instance.lastUnityId = id;
35
- return MobileUnityWidgetController ._(
35
+ var controller = MobileUnityWidgetController ._(
36
36
unityWidgetState,
37
37
unityId: id,
38
38
);
39
+ await UnityWidgetPlatform .instance.init (id);
40
+ return controller;
39
41
}
40
42
41
43
void _connectStreams (int unityId) {
Original file line number Diff line number Diff line change @@ -204,9 +204,6 @@ class _UnityWidgetState extends State<UnityWidget> {
204
204
widget.onUnityCreated !(controller);
205
205
}
206
206
207
- // if (widget.onUnityAttached != null)
208
- // widget.onUnityAttached!();
209
-
210
207
if (widget.printSetupLog) {
211
208
log ('*********************************************' );
212
209
log ('** flutter unity controller setup complete **' );
You can’t perform that action at this time.
0 commit comments