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 {
3030 OnUnityPlayerQuited ,
3131 OnUnitySceneLoaded ,
3232 OnUnityMessage ,
33+ OnViewAttached ,
34+ OnViewDetached ,
3335}
3436
3537class DataStreamHandler : EventChannel .StreamHandler {
Original file line number Diff line number Diff line change @@ -246,18 +246,23 @@ class FlutterUnityWidgetController(
246246 UnityPlayerUtils .addUnityViewToGroup(view)
247247 UnityPlayerUtils .focus()
248248
249- attached = true
250-
251249 if (UnityPlayerUtils .controllers.size >= 2 ) {
252- for (controller in UnityPlayerUtils .controllers.subList( 0 , UnityPlayerUtils .controllers.size - 1 ) ) {
250+ for (controller in UnityPlayerUtils .controllers.values ) {
253251 if (controller.attached) {
254252 controller.detach()
255253 }
256254 }
257255 }
256+ attached = true
257+
258258
259259 Handler (Looper .getMainLooper()).post {
260- methodChannel.invokeMethod(" events#onViewAttached" , null )
260+ DataStreamEventNotifier .notifier.onNext(
261+ DataStreamEvent (
262+ DataStreamEventTypes .OnViewAttached .name,
263+ viewId,
264+ )
265+ )
261266 }
262267 }
263268
@@ -305,7 +310,12 @@ class FlutterUnityWidgetController(
305310
306311 private fun detach () {
307312 Handler (Looper .getMainLooper()).post {
308- methodChannel.invokeMethod(" events#onViewDetached" , null )
313+ DataStreamEventNotifier .notifier.onNext(
314+ DataStreamEvent (
315+ DataStreamEventTypes .OnViewDetached .name,
316+ viewId,
317+ )
318+ )
309319 }
310320 attached = false
311321 }
Original file line number Diff line number Diff line change @@ -88,6 +88,12 @@ class EventDataPayload {
8888 case 'OnViewReattached' :
8989 eventType = UnityEventTypes .OnViewReattached ;
9090 break ;
91+ case 'OnViewAttached' :
92+ eventType = UnityEventTypes .OnViewAttached ;
93+ break ;
94+ case 'OnViewDetached' :
95+ eventType = UnityEventTypes .OnViewDetached ;
96+ break ;
9197 }
9298
9399 return EventDataPayload (
Original file line number Diff line number Diff line change @@ -85,10 +85,12 @@ class MethodChannelUnityWidget extends UnityWidgetPlatform {
8585 .add (UnitySceneLoadedEvent (0 , SceneLoaded .fromMap (event.data)));
8686 break ;
8787 case UnityEventTypes .OnViewAttached :
88- _unityStreamController.add (UnityAttachedEvent (0 , event.data));
88+ _unityStreamController
89+ .add (UnityAttachedEvent (int .parse ((event.data as String ).split ('-' ).last), event.data));
8990 break ;
9091 case UnityEventTypes .OnViewDetached :
91- _unityStreamController.add (UnityDetachedEvent (0 , event.data));
92+ _unityStreamController
93+ .add (UnityDetachedEvent (int .parse ((event.data as String ).split ('-' ).last), event.data));
9294 break ;
9395 case UnityEventTypes .OnUnityPlayerReInitialize :
9496 case UnityEventTypes .OnViewReattached :
Original file line number Diff line number Diff line change @@ -70,8 +70,15 @@ class FlutterUnityMethodChannel extends FlutterUnityPlatform {
7070 _unityStreamController.add (UnityMessageEvent (0 , payload.data));
7171 break ;
7272 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));
7582 break ;
7683 case UnityEventTypes .OnUnityPlayerReInitialize :
7784 case UnityEventTypes .OnViewReattached :
Original file line number Diff line number Diff line change @@ -32,10 +32,12 @@ class MobileUnityWidgetController extends UnityWidgetController {
3232 int id, MobileUnityWidgetState unityWidgetState) async {
3333 await UnityWidgetPlatform .instance.init (id);
3434 FlutterUnityController .instance.lastUnityId = id;
35- return MobileUnityWidgetController ._(
35+ var controller = MobileUnityWidgetController ._(
3636 unityWidgetState,
3737 unityId: id,
3838 );
39+ await UnityWidgetPlatform .instance.init (id);
40+ return controller;
3941 }
4042
4143 void _connectStreams (int unityId) {
Original file line number Diff line number Diff line change @@ -204,9 +204,6 @@ class _UnityWidgetState extends State<UnityWidget> {
204204 widget.onUnityCreated !(controller);
205205 }
206206
207- // if (widget.onUnityAttached != null)
208- // widget.onUnityAttached!();
209-
210207 if (widget.printSetupLog) {
211208 log ('*********************************************' );
212209 log ('** flutter unity controller setup complete **' );
You can’t perform that action at this time.
0 commit comments