Flutter集成TAR SDK插件tar_sdk_flutter的使用

Flutter集成TAR SDK插件tar_sdk_flutter的使用

本项目是一个用于Flutter的新插件项目。它是一个专门的插件包,包括针对Android和/或iOS平台的特定实现代码。

开始使用

如果您刚开始学习Flutter开发,可以查看官方文档,其中包含教程、示例、移动开发指南以及完整的API引用。

示例代码

以下是使用tar_sdk_flutter插件的完整示例代码:

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:tar_sdk_flutter/tar_sdk_flutter.dart';
import 'package:tar_sdk_flutter/tar_sdk_flutter_method_channel.dart';
import 'package:tar_sdk_flutter/tar_sdk_flutter_platform_interface.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';

void main() async {
  // 加载环境变量文件
  await dotenv.load(fileName: '.env');
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  CancelListening cancelListening = () {};

  final _tarSdkFlutterPlugin = TarSdkFlutter();

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,因此我们在异步方法中进行初始化
  Future<void> initPlatformState() async {
    // 如果在异步平台消息传输期间小部件从树中移除,则我们希望丢弃回复而不是调用setState来更新我们的非存在外观。
    if (!mounted) return;

    setState(() {});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('TAR SDK 示例应用'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              // 按钮用于打开TAR SDK
              TextButton(
                onPressed: () async {
                  var isSupported = await _tarSdkFlutterPlugin.isSupported();
                  if (isSupported) {
                    // 获取API密钥
                    var apiKey = dotenv.env['TAR_APIKEY'] ?? '';
                    // 初始化设置
                    var settings = TARSettings(
                      apiKey: apiKey,
                      language: 'en',
                      defaultLanguage: 'en',
                      activeLanguages: ['en', 'nl', 'fr'],
                      walletMode: true,
                      mapMode: true,
                      paintingMode: true,
                      colorPalette: {
                        'blue': '#000000'
                      },
                      startMode: TARStartMode.geo,
                      useProduction: true);

                    // 启动监听
                    cancelListening = await _tarSdkFlutterPlugin.startListening(
                      (success) {
                        print('OnInitialize $success');
                      },
                      (message) {
                        print('OnSDKMessage ${message['assetID']}');
                      },
                      () {
                        print('OnSDKUnload');
                        cancelListening();
                      });

                    // 显示TAR SDK
                    await _tarSdkFlutterPlugin.showTAR(settings);
                  }
                },
                child: const Text('打开TAR SDK'),
              ),
              // 按钮用于打开带有资产的TAR SDK
              TextButton(
                onPressed: () async {
                  var isSupported = await _tarSdkFlutterPlugin.isSupported();
                  if (isSupported) {
                    // 获取API密钥
                    var apiKey = dotenv.env['TAR_APIKEY'] ?? '';
                    // 初始化设置
                    var settings = TARWithAssetSettings(
                      apiKey: apiKey,
                      language: 'nl',
                      defaultLanguage: 'nl',
                      activeLanguages: ['en', 'nl', 'fr'],
                      colorPalette: {
                        'blue': '#ff0000'
                      },
                      startMode: TARStartMode.indoor,
                      useProduction: true,
                      assetId: '672b8243aba9420026abc5e4');

                    // 启动监听
                    cancelListening = await _tarSdkFlutterPlugin.startListening(
                      (success) {
                        print('OnInitialize $success');
                      },
                      (message) {
                        print('OnSDKMessage ${message['assetID']}');
                      },
                      () {
                        print('OnSDKUnload');
                        cancelListening();
                      });

                    // 显示带有资产的TAR SDK
                    await _tarSdkFlutterPlugin.showTARWithAsset(settings);
                  }
                },
                child: const Text('打开带有资产的TAR SDK'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter集成TAR SDK插件tar_sdk_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter集成TAR SDK插件tar_sdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成并使用tar_sdk_flutter插件的示例代码案例。假设你已经有一个现成的Flutter项目,并且已经配置好了基本的开发环境。

1. 添加依赖

首先,你需要在你的pubspec.yaml文件中添加tar_sdk_flutter依赖。

dependencies:
  flutter:
    sdk: flutter
  tar_sdk_flutter: ^最新版本号  # 请替换为实际最新版本号

然后运行flutter pub get来获取依赖。

2. 配置Android和iOS

根据tar_sdk_flutter插件的文档,可能需要在Android和iOS平台上进行一些额外的配置。这里假设这些配置已经完成,并且你已经有TAR SDK的相关凭证(如API Key等)。

3. 使用TAR SDK插件

以下是一个简单的Flutter应用示例,展示如何使用tar_sdk_flutter插件。

import 'package:flutter/material.dart';
import 'package:tar_sdk_flutter/tar_sdk_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'TAR SDK Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TARSDKDemo(),
    );
  }
}

class TARSDKDemo extends StatefulWidget {
  @override
  _TARSDKDemoState createState() => _TARSDKDemoState();
}

class _TARSDKDemoState extends State<TARSDKDemo> {
  late TARSDK _tarSdk;
  String _result = "";

  @override
  void initState() {
    super.initState();
    // 初始化TAR SDK
    _tarSdk = TARSDK(
      apiKey: '你的API_KEY',  // 替换为你的实际API Key
      onInitializationComplete: (success) {
        if (success) {
          print("TAR SDK initialized successfully");
        } else {
          print("TAR SDK initialization failed");
        }
      },
    );
  }

  @override
  void dispose() {
    // 释放TAR SDK资源
    _tarSdk.dispose();
    super.dispose();
  }

  Future<void> _performTARAction() async {
    try {
      // 假设我们有一个要进行TAR操作的图像文件路径
      String imagePath = 'path/to/your/image.jpg';

      // 执行TAR操作,这里以某种假设的方法为例
      var result = await _tarSdk.performTARAction(onImagePath: imagePath);

      // 更新UI显示结果
      setState(() {
        _result = "TAR Result: ${result.toJson()}";
      });
    } catch (e) {
      setState(() {
        _result = "Error: $e";
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('TAR SDK Flutter Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              _result,
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _performTARAction,
              child: Text('Perform TAR Action'),
            ),
          ],
        ),
      ),
    );
  }
}

注意事项

  1. API Key:确保你替换了示例代码中的你的API_KEY为实际的TAR SDK API Key。
  2. 图像路径:在_performTARAction方法中,imagePath需要替换为实际的图像文件路径。
  3. TAR操作performTARAction是一个假设的方法,具体实现需要参考tar_sdk_flutter插件的文档。插件可能提供了不同的方法来执行TAR操作,如人脸检测、物体识别等。
  4. 错误处理:在实际应用中,应该添加更详细的错误处理逻辑。

这个示例代码只是一个起点,你可能需要根据tar_sdk_flutter插件的具体API文档进行调整和扩展。

回到顶部