xcloudsdk_flutter 0.0.2 copy "xcloudsdk_flutter: ^0.0.2" to clipboard
xcloudsdk_flutter: ^0.0.2 copied to clipboard

outdated

A Flutter Plugin base on XCloudSDK(FunSDK).

example/lib/main.dart

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_gen/gen_l10n/jf_localizations.dart';

import 'package:path_provider/path_provider.dart';
import 'package:provider/provider.dart';
import 'package:xcloudsdk_flutter/api/sdk_init/model.dart';
import 'package:xcloudsdk_flutter/xcloud.dart';

import 'package:xcloudsdk_flutter_example/models/user_instance.dart';
import 'package:xcloudsdk_flutter_example/views/toast/toast.dart';

import 'common/named_route.dart';
import 'pages/device/viewmodel/device_list_view_model.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  UserInfo.instance.init();
  await _sdkInit();
  SystemChrome.setSystemUIOverlayStyle(
    const SystemUiOverlayStyle(statusBarColor: Colors.transparent),
  );
  SystemChrome.setPreferredOrientations(
      [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
  runApp(const JFApp());
}

///SDK 初始化
Future<void> _sdkInit() async {
  Directory? directory;
  String uuid = '';
  String appKey = '';
  String appSecret = '';
  int movedCard = 0;
  if (Platform.isIOS) {
    uuid = '659df7f50dd67b17b4b97667';
    appKey = '8c7fa5d7efd0f8f2bbcae8306fbccc4f';
    appSecret = '31c9ed1745c9433bbf6be9a28d3e34f6';
    movedCard = 2;
    directory = await getApplicationDocumentsDirectory();
  } else {
    uuid = '659df7f50dd67b17b4b97667';
    appKey = 'cb160b37eac19724feba5aed3629ed65';
    appSecret = '7a61d33a4b324070af17bb9f526908e4';
    movedCard = 1;
    directory = await getExternalStorageDirectory();
  }
  SDKInit sdkInit = SDKInit(
      platUUID: uuid,
      platAppKey: appKey,
      platAppSecret: appSecret,
      platMovedCard: movedCard,
      tempPath: '/${directory!.path}/',
      configPath: '/${directory.path}/');
  await XCloudSDK.init(sdkInit);

  /// 配置SDK日志信息
  final File file = File.fromUri(Uri(path: '${directory.path}/XCloudSDK.ini'));
  String text = await file.readAsString();
  List list = text.split(',');
  final pList = [];
  for (String item in list) {
    if (item.contains('NetEnbale')) {
      const i = "\n        \"NetEn"
          "bale\":	1";
      pList.add(i);
    } else if (item.contains('ServerIP')) {
      const i = "\n        \"ServerIP\":	\"10.10.22.97\"";
      pList.add(i);
    } else if (item.contains('Port')) {
      const i = "\n        \"Port\": 9004";
      pList.add(i);
    } else if (item.contains('FileEnbale')) {
      const i = "\n        \"FileEnbale\":	1";
      pList.add(i);
    } else if (item.contains('LogLevel')) {
      const i = "\n        \"LogLevel\":	1";
      pList.add(i);
    } else {
      pList.add(item);
    }
  }
  text = pList.join(',');
  await file.writeAsString(text);
  debugPrint(text);
  return Future.value();
}

class JFApp extends StatefulWidget {
  const JFApp({Key? key}) : super(key: key);

  @override
  State<JFApp> createState() => _JFAppState();
}

class _JFAppState extends State<JFApp> {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (_) => UserInfo.instance,
          lazy: false,
        ),
        ChangeNotifierProvider(
          create: (context) => DevListViewModel(),
        ),
      ],
      child: MaterialApp.router(
        routerConfig: goRouter,
        theme: ThemeData.light(useMaterial3: false),
        localizationsDelegates: JFLocalizations.localizationsDelegates,
        supportedLocales: JFLocalizations.supportedLocales,
        builder: KToast.init(),
      ),
    );
  }
}