import 'package:flutter/material.dart'; import 'package:flutter_cocos_view/flutter_cocos_view.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; class NoInteractionScreen extends StatefulWidget { const NoInteractionScreen({Key? key}) : super(key: key); @override State createState() => _NoInteractionScreenState(); } class _NoInteractionScreenState extends State { static final GlobalKey _scaffoldKey = GlobalKey(); CocosWidgetController? _cocosWidgetController; @override void initState() { super.initState(); } @override void dispose() { _cocosWidgetController?.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( key: _scaffoldKey, appBar: AppBar( title: const Text('No Interaction Screen'), ), body: Card( margin: const EdgeInsets.all(8), clipBehavior: Clip.antiAlias, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20.0), ), child: Stack( children: [ CocosWidget( onCocosCreated: _onCocosCreated, onCocosMessage: onCocosMessage, onCocosSceneLoaded: onCocosSceneLoaded, useAndroidViewSurface: true, borderRadius: const BorderRadius.all(Radius.circular(70)), ), Positioned( bottom: 20, left: 20, right: 20, child: PointerInterceptor( child: ElevatedButton( onPressed: () { Navigator.of(context).pushNamed('/simple'); }, child: const Text('Switch Flutter Screen'), ), ), ), ], ), ), ); } void setRotationSpeed(String speed) { _cocosWidgetController?.postMessage( 'Cube', 'SetRotationSpeed', speed, ); } void onCocosMessage(message) { print('Received message from cocos: ${message.toString()}'); } void onCocosSceneLoaded(SceneLoaded? scene) { if (scene != null) { print('Received scene loaded from cocos: ${scene.name}'); print('Received scene loaded from cocos buildIndex: ${scene.buildIndex}'); } else { print('Received scene loaded from cocos: null'); } } // Callback that connects the created controller to the cocos controller void _onCocosCreated(controller) { controller.resume(); _cocosWidgetController = controller; } }