flutter_service 0.0.1 copy "flutter_service: ^0.0.1" to clipboard
flutter_service: ^0.0.1 copied to clipboard

outdated

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();
                  },)
                ],
              ),
          ],
          ),
        )
      ),
    );
  }
}
0
likes
0
points
39
downloads

Publisher

unverified uploader

Weekly Downloads

A new flutter plugin project.

Homepage

License

unknown (license)

Dependencies

flutter

More

Packages that depend on flutter_service

Packages that implement flutter_service