no message
This commit is contained in:
168
example/lib/screens/api_screen.dart
Normal file
168
example/lib/screens/api_screen.dart
Normal file
@@ -0,0 +1,168 @@
|
||||
// ignore_for_file: avoid_print
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import "package:flutter_cocos_view/flutter_cocos_view.dart";
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
|
||||
class ApiScreen extends StatefulWidget {
|
||||
const ApiScreen({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<ApiScreen> createState() => _ApiScreenState();
|
||||
}
|
||||
|
||||
class _ApiScreenState extends State<ApiScreen> {
|
||||
CocosWidgetController? _cocosWidgetController;
|
||||
double _sliderValue = 0.0;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_cocosWidgetController?.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('API 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,
|
||||
fullscreen: false,
|
||||
useAndroidViewSurface: false,
|
||||
),
|
||||
Positioned(
|
||||
bottom: 20,
|
||||
left: 20,
|
||||
right: 20,
|
||||
child: PointerInterceptor(
|
||||
child: Card(
|
||||
elevation: 10,
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: <Widget>[
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(top: 20),
|
||||
child: Text("Rotation speed:"),
|
||||
),
|
||||
Slider(
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_sliderValue = value;
|
||||
});
|
||||
setRotationSpeed(value.toString());
|
||||
},
|
||||
value: _sliderValue,
|
||||
min: 0,
|
||||
max: 20,
|
||||
),
|
||||
FittedBox(
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
MaterialButton(
|
||||
onPressed: () {
|
||||
_cocosWidgetController?.quit();
|
||||
},
|
||||
child: const Text("Quit"),
|
||||
),
|
||||
MaterialButton(
|
||||
onPressed: () {
|
||||
_cocosWidgetController?.create();
|
||||
},
|
||||
child: const Text("Create"),
|
||||
),
|
||||
MaterialButton(
|
||||
onPressed: () {
|
||||
_cocosWidgetController?.pause();
|
||||
},
|
||||
child: const Text("Pause"),
|
||||
),
|
||||
MaterialButton(
|
||||
onPressed: () {
|
||||
_cocosWidgetController?.resume();
|
||||
},
|
||||
child: const Text("Resume"),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
FittedBox(
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
MaterialButton(
|
||||
onPressed: () async {
|
||||
await _cocosWidgetController
|
||||
?.openInNativeProcess();
|
||||
},
|
||||
child: const Text("Open Native"),
|
||||
),
|
||||
MaterialButton(
|
||||
onPressed: () {
|
||||
_cocosWidgetController?.unload();
|
||||
},
|
||||
child: const Text("Unload"),
|
||||
),
|
||||
MaterialButton(
|
||||
onPressed: () {
|
||||
_cocosWidgetController?.quit();
|
||||
},
|
||||
child: const Text("Silent Quit"),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
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) {
|
||||
_cocosWidgetController = controller;
|
||||
}
|
||||
}
|
||||
93
example/lib/screens/loader_screen.dart
Normal file
93
example/lib/screens/loader_screen.dart
Normal file
@@ -0,0 +1,93 @@
|
||||
// ignore_for_file: avoid_print
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_cocos_view/flutter_cocos_view.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
|
||||
class LoaderScreen extends StatefulWidget {
|
||||
const LoaderScreen({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<LoaderScreen> createState() => _LoaderScreenState();
|
||||
}
|
||||
|
||||
class _LoaderScreenState extends State<LoaderScreen> {
|
||||
CocosWidgetController? _cocosWidgetController;
|
||||
double _sliderValue = 0.0;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Safe Mode Screen'),
|
||||
),
|
||||
body: Card(
|
||||
margin: const EdgeInsets.all(8),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(20.0),
|
||||
),
|
||||
child: Stack(
|
||||
children: <Widget>[
|
||||
CocosWidget(
|
||||
onCocosCreated: onCocosCreated,
|
||||
onCocosMessage: onCocosMessage,
|
||||
useAndroidViewSurface: true,
|
||||
),
|
||||
Positioned(
|
||||
bottom: 20,
|
||||
left: 20,
|
||||
right: 20,
|
||||
child: PointerInterceptor(
|
||||
child: Card(
|
||||
elevation: 10,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(top: 20),
|
||||
child: Text("Rotation speed:"),
|
||||
),
|
||||
Slider(
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_sliderValue = value;
|
||||
});
|
||||
setRotationSpeed(value.toString());
|
||||
},
|
||||
value: _sliderValue,
|
||||
min: 0,
|
||||
max: 20,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void setRotationSpeed(String speed) {
|
||||
_cocosWidgetController?.postMessage(
|
||||
'Cube',
|
||||
'SetRotationSpeed',
|
||||
speed,
|
||||
);
|
||||
}
|
||||
|
||||
void onCocosMessage(message) {
|
||||
print('Received message from cocos: ${message.toString()}');
|
||||
}
|
||||
|
||||
// Callback that connects the created controller to the cocos controller
|
||||
void onCocosCreated(controller) {
|
||||
_cocosWidgetController = controller;
|
||||
}
|
||||
}
|
||||
96
example/lib/screens/no_interaction_screen.dart
Normal file
96
example/lib/screens/no_interaction_screen.dart
Normal file
@@ -0,0 +1,96 @@
|
||||
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<NoInteractionScreen> createState() => _NoInteractionScreenState();
|
||||
}
|
||||
|
||||
class _NoInteractionScreenState extends State<NoInteractionScreen> {
|
||||
static final GlobalKey<ScaffoldState> _scaffoldKey =
|
||||
GlobalKey<ScaffoldState>();
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
108
example/lib/screens/orientation_screen.dart
Normal file
108
example/lib/screens/orientation_screen.dart
Normal file
@@ -0,0 +1,108 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_cocos_view/flutter_cocos_view.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
|
||||
class OrientationScreen extends StatefulWidget {
|
||||
const OrientationScreen({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<OrientationScreen> createState() => _OrientationScreenState();
|
||||
}
|
||||
|
||||
class _OrientationScreenState extends State<OrientationScreen> {
|
||||
CocosWidgetController? _cocosWidgetController;
|
||||
double _sliderValue = 0.0;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Orientation Screen'),
|
||||
),
|
||||
body: Card(
|
||||
margin: const EdgeInsets.all(8),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(20.0),
|
||||
),
|
||||
child: Stack(
|
||||
children: <Widget>[
|
||||
CocosWidget(
|
||||
onCocosCreated: onCocosCreated,
|
||||
onCocosMessage: onCocosMessage,
|
||||
useAndroidViewSurface: true,
|
||||
),
|
||||
Positioned(
|
||||
bottom: 20,
|
||||
left: 20,
|
||||
right: 20,
|
||||
child: PointerInterceptor(
|
||||
child: Card(
|
||||
elevation: 10,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
if (MediaQuery.of(context).orientation ==
|
||||
Orientation.portrait) {
|
||||
SystemChrome.setPreferredOrientations([
|
||||
DeviceOrientation.landscapeLeft,
|
||||
DeviceOrientation.landscapeRight
|
||||
]);
|
||||
} else if (MediaQuery.of(context).orientation ==
|
||||
Orientation.landscape) {
|
||||
SystemChrome.setPreferredOrientations(
|
||||
[DeviceOrientation.portraitUp]);
|
||||
}
|
||||
},
|
||||
child: const Text("Change Orientation"),
|
||||
),
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(top: 20),
|
||||
child: Text("Rotation speed:"),
|
||||
),
|
||||
Slider(
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_sliderValue = value;
|
||||
});
|
||||
setRotationSpeed(value.toString());
|
||||
},
|
||||
value: _sliderValue,
|
||||
min: 0,
|
||||
max: 20,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void setRotationSpeed(String speed) {
|
||||
_cocosWidgetController?.postMessage(
|
||||
'Cube',
|
||||
'SetRotationSpeed',
|
||||
speed,
|
||||
);
|
||||
}
|
||||
|
||||
void onCocosMessage(message) {
|
||||
print('Received message from cocos: ${message.toString()}');
|
||||
}
|
||||
|
||||
// Callback that connects the created controller to the cocos controller
|
||||
void onCocosCreated(controller) {
|
||||
_cocosWidgetController = controller;
|
||||
}
|
||||
}
|
||||
112
example/lib/screens/simple_screen.dart
Normal file
112
example/lib/screens/simple_screen.dart
Normal file
@@ -0,0 +1,112 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_cocos_view/flutter_cocos_view.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
|
||||
class SimpleScreen extends StatefulWidget {
|
||||
const SimpleScreen({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<SimpleScreen> createState() => _SimpleScreenState();
|
||||
}
|
||||
|
||||
class _SimpleScreenState extends State<SimpleScreen> {
|
||||
static final GlobalKey<ScaffoldState> _scaffoldKey =
|
||||
GlobalKey<ScaffoldState>();
|
||||
|
||||
CocosWidgetController? _cocosWidgetController;
|
||||
double _sliderValue = 0.0;
|
||||
|
||||
@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('Simple Screen'),
|
||||
),
|
||||
body: Card(
|
||||
margin: const EdgeInsets.all(0),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(20.0),
|
||||
),
|
||||
child: Stack(
|
||||
children: [
|
||||
CocosWidget(
|
||||
onCocosCreated: _onCocosCreated,
|
||||
onCocosMessage: onCocosMessage,
|
||||
onCocosSceneLoaded: onCocosSceneLoaded,
|
||||
useAndroidViewSurface: false,
|
||||
borderRadius: const BorderRadius.all(Radius.circular(70)),
|
||||
),
|
||||
Positioned(
|
||||
bottom: 0,
|
||||
left: 0,
|
||||
right: 0,
|
||||
child: PointerInterceptor(
|
||||
child: Card(
|
||||
elevation: 10,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(top: 20),
|
||||
child: Text("Rotation speed:"),
|
||||
),
|
||||
Slider(
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_sliderValue = value;
|
||||
});
|
||||
setRotationSpeed(value.toString());
|
||||
},
|
||||
value: _sliderValue,
|
||||
min: 0.0,
|
||||
max: 1.0,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user