flutter_service 0.0.1
flutter_service: ^0.0.1 copied to clipboard
A new flutter plugin project.
example/lib/main.dart
import 'dart:typed_data';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_service/flutter_service.dart';
void main() => runApp(MyApp());
const String kServiceStatusBroadcast = "flutter_service_broad_status";
class MyApp extends StatefulWidget {
@override
_MyAppState createState() {
return _MyAppState();
}
}
class _MyAppState extends State<MyApp> {
bool _serviceInited = false;
bool _rcvBroad = false;
bool _broadSubscribed = false;
@override
void initState() {
super.initState();
}
Future<void> initService() async {
if (_serviceInited) {return;}
bool initSuccess = false;
Map params = {
"appId": 1249193970, // service appid
"compAppid": "igameip", // 公司统一的 appid
"version": "2.0", // 应用的版本
"region": "AE", //地区/国家码,传空则native层自己取默认值
"testIP": "",
"testPort": "",
"accountId":"d744c4c5-61cf-4ff7-b7f3-1a3c268190bf"//必填,在cix.yy.com 申请项目时候会有,没有找郭晋君
};
try {
initSuccess = await FlutterService.initService(params);
} on PlatformException {
print("Unable to init service");
}
if (initSuccess != _serviceInited) {
setState(() {
_serviceInited = initSuccess;
});
}
}
void toggleBroadcastReceivingState() {
if (_rcvBroad) {
FlutterService.stopReceivingBroadcasts();
} else {
FlutterService.startReceivingBroadcasts((name, data){
print("Did rcv service broadcast [$name]");
if (name == kServiceStatusBroadcast) {
} else if (name == kServiceKickOffBroadcast) {
} else if (name == kServicePushDataBroadcast) {
FlutterServicePushData pushData = FlutterServicePushData.fromJSON(data);
var datalen = pushData.data.lengthInBytes;
var type = pushData.groupType;
var id = pushData.groupId;
var func = pushData.functionName;
print("rcv push data with group type: $type, id: $id, func: $func, len: $datalen");
}
});
}
setState(() {
_rcvBroad = !_rcvBroad;
});
}
void toggleBroadcastSubscription() {
var userGrp = FlutterServiceUserGroup();
userGrp.groupId = 1424114795;
userGrp.groupType = 2147483650;
var subscribeReq = FlutterServiceBroadcastSubscribeRequest();
// subscribeReq.businessContext = "";
subscribeReq.userGroups = [userGrp];
if (!_broadSubscribed) {
FlutterService.subscribeBroadcast(subscribeReq, (reqId, resp){
print("Subscription success with resp: $resp");
setState(() {
_broadSubscribed = !_broadSubscribed;
});
}, (reqId, resCode, serverCode, desc) {
print("Subscription failed with desc: $desc");
});
} else {
FlutterService.unsubscribeBroadcast(subscribeReq,(reqId, resp){
print("Unsubscribe success with resp: $resp");
setState(() {
_broadSubscribed = !_broadSubscribed;
});
}, (reqId, resCode, serverCode, desc) {
print("Unsubscribe failed with desc: $desc");
});
}
}
void sendRequest() {
var request = FlutterServiceRequest();
request.businessContext = "business context";
request.serverName = "igameIndex";
request.functionName = "getSplashScreenInfo";
request.protoType = "protobuf";
request.requestData = new Uint8List(0);
FlutterService.request(request, (resp) {
var datalen = resp.responseData.lengthInBytes;
print("Req success with resp len: $datalen");
}, (reqId, resCode, serverCode, desc) {
print("Request failed with desc: $desc");
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Padding(
padding: EdgeInsets.all(20),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CupertinoButton(child: Text(_serviceInited ? "Service Plugin Initialzed" : "Init Service Plugin"),
onPressed: () {
initService();
},)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CupertinoButton(child: Text(_rcvBroad ? "Stop receiving broadcast" : "Start receiving broadcast"),
onPressed: () {
toggleBroadcastReceivingState();
},)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CupertinoButton(child: Text(_broadSubscribed ? "Unsubscribe broadcast" : "Subscribe broadcast"),
onPressed: () {
toggleBroadcastSubscription();
},)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CupertinoButton(child: Text("Send Request"),
onPressed: () {
if (!_serviceInited) {
print("You must init service first");
return;
} // end of if (!_serviceInited)
sendRequest();
},)
],
),
],
),
)
),
);
}
}