Flutter交易管理插件tradein_plugin的使用

tradein_plugin

Trade in 插件包用于在Flutter应用中使用原生模块(如Android和iOS代码)。
该插件允许开发者通过Flutter调用原生功能,从而实现更复杂的功能。


使用步骤

1. 添加依赖

pubspec.yaml文件中添加tradein_plugin依赖:

dependencies:
  tradein_plugin: ^1.0.0 # 请根据实际版本号调整

然后运行以下命令安装依赖:

flutter pub get

2. 初始化插件

main.dart中初始化插件并调用原生功能。以下是完整的示例代码:

示例代码

import 'dart:io';

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

import 'package:flutter/services.dart';
import 'package:tradein_plugin/tradein_plugin.dart';
import 'package:tradein_plugin/modal/student.dart';

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  String _selectedText = '';
  String _dataFromAndroidNativeCode = 'Unknown';
  String _resultFromAndroidNativeCode = 'Unknown';
  List<Map<String, dynamic>> _arr = [
    {'name': 'man', 'age': 28},
    {'name': 'ram', 'age': 34},
  ];
  List<Map<String, dynamic>> arr = [
    {
      'name': 'Citroen C5 Aircross',
      'description':
      'Mahindra has provided the XUV700 with two powertrain options: 200PS/380Nm 2.0-litre turbo-petrol and a 2.2-litre diesel developing up to 185PS and 450Nm. Both engines get 6-speed manual and 6-speed automatic transmission options'
    },
    {
      'name': 'Mahindra XUV700',
      'description':
      'Mahindra has provided the XUV700 with two powertrain options: 200PS/380Nm 2.0-litre turbo-petrol and a 2.2-litre diesel developing up to 185PS and 450Nm. Both engines get 6-speed manual and 6-speed automatic transmission options'
    },
    {
      'name': 'Kia Seltos',
      'description':
      'Kia has provided the 2021 Seltos with three powertrains: a 115PS/144Nm 1.5-litre petrol, 140PS/242Nm 1.4-litre turbo-petrol, and a 115PS/250Nm 1.5-litre diesel unit. All engines come mated with a standard 6-speed manual gearbox'
    },
    {
      'name': 'Renault Kiger',
      'description':
      'The Renault Kiger is available with two petrol engines: 72PS/96Nm 1.0-litre naturally aspirated and 100PS/160Nm 1.0-litre turbo-petrol units. It comes with a standard 5-speed manual gearbox.'
    },
  ];
  final student = Student(name: 'man', age: 20);

  Map<String, dynamic> json = {'name': 'man', 'age': 28};

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

  // 初始化平台状态
  Future<void> initPlatformState() async {
    String platformVersion;
    String _dataFromAndroid = 'Unknown';
    try {
      platformVersion =
          await TradeinPlugin.platformVersion ?? 'Unknown platform version';
      TradeinPlugin.passValuesToNative(student,
          value: 'hi', arr: _arr, json: json, isTrue: true);
      _getTradinPluginSDKValues();
      print("Venky calling for data - " + _dataFromAndroid);
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }
  }

  // 调用原生方法获取数据
  Future<String?> _getTradinPluginSDKValues() async {
    print("Venky calling for data new");
    String data;
    try {
      data = (await TradeinPlugin.getTradinPluginSDKValues)!;
    } on PlatformException catch (e) {
      data = "Android is not responding please check the code";
    }
    setState(() {
      print("Venky calling for data new - " + data);
      _dataFromAndroidNativeCode = data;
      print("Venky calling for data new - " + _dataFromAndroidNativeCode);
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Trade In Host App'),
        ),
        body: Center(
          child: Column(
            children: <Widget>[
              // 显示欢迎信息
              Container(
                margin: EdgeInsets.all(25),
                child: Text(
                  'Welcome To Trade In Host App',
                  style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold),
                ),
              ),
              // 按钮1:调用原生视图
              Container(
                margin: EdgeInsets.all(25),
                child: FlatButton(
                  child: Text(
                    Platform.isIOS ? 'Car List' : 'Flutter Plug In POC 1 - Android',
                    style: TextStyle(fontSize: 20.0),
                  ),
                  color: Colors.blueAccent,
                  textColor: Colors.white,
                  onPressed: _showNativeView,
                ),
              ),
              // 按钮2:调用原生视图(POC 2)
              Container(
                margin: EdgeInsets.all(25),
                child: FlatButton(
                  child: Text(
                    'Flutter Plug In POC 2 - Android',
                    style: TextStyle(fontSize: 20.0),
                  ),
                  color: Colors.blueAccent,
                  textColor: Colors.white,
                  onPressed: _showAndroidNativeView,
                ),
              ),
              // 按钮3:调用Trade In SDK
              Container(
                margin: EdgeInsets.all(25),
                child: FlatButton(
                  child: Text(
                    'Trade In SDK (Android)',
                    style: TextStyle(fontSize: 20.0),
                  ),
                  color: Colors.blueAccent,
                  textColor: Colors.white,
                  onPressed: _showTradeInView,
                ),
              ),
              // 显示选择的车辆信息
              _selectedText != ''
                  ? RichText(
                      textAlign: TextAlign.center,
                      text: TextSpan(
                        style: TextStyle(
                            fontSize: 16,
                            color: Colors.black,
                            fontWeight: FontWeight.w500),
                        children: [
                          TextSpan(text: 'Seleted Car: '),
                          TextSpan(
                            text: _selectedText,
                            style: TextStyle(
                                fontSize: 18,
                                fontWeight: FontWeight.bold,
                                color: Colors.blue),
                          ),
                        ],
                      ),
                    )
                  : Text(''),
            ],
          ),
        ),
      ),
    );
  }

  // 调用原生视图
  Future<void> _showNativeView() async {
    if (Platform.isIOS) {
      final value = await TradeinPlugin.passValuesToNative(student,
          value: 'hi', arr: arr, json: json, isTrue: true);
      setState(() {
        _selectedText = value ?? '';
      });
    } else {
      TradeinPlugin.loadTradinPluginSDK();
    }
  }

  // 调用POC 2
  Future<void> _showAndroidNativeView() async {
    print("Venky calling for data _showNativeView");
    final student = Student(name: 'man', age: 20);
    TradeinPlugin.passValuesToNative(
        student, value: 'hi', arr: _arr, json: json, isTrue: true);
  }

  // 调用Trade In SDK
  Future<void> _showTradeInView() async {
    print("Venky calling for data _showNativeView");
    String data1;
    try {
      final String? data = await TradeinPlugin.loadTradinPluginSDKWithValues(
          "userName", "iLotid", "vin"); // 发送数据到原生代码
      setState(() {
        print("Venky calling for data _showNativeView - " + data!);
        _resultFromAndroidNativeCode = data;
        print("Venky calling for data _showNativeView - " +
            _dataFromAndroidNativeCode);
      });
    } on PlatformException catch (e) {
      data1 = "Android is not responding please check the code";
    }
  }
}

更多关于Flutter交易管理插件tradein_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter交易管理插件tradein_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


tradein_plugin 是一个用于 Flutter 的交易管理插件,它可以帮助开发者轻松地集成交易管理功能到他们的应用中。以下是如何使用 tradein_plugin 的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  tradein_plugin: ^1.0.0  # 请使用最新版本

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

2. 导入插件

在你的 Dart 文件中导入 tradein_plugin

import 'package:tradein_plugin/tradein_plugin.dart';

3. 初始化插件

在使用插件之前,通常需要先进行初始化。你可以在 main.dart 或任何合适的地方进行初始化。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await TradeinPlugin.initialize();
  runApp(MyApp());
}

4. 使用插件功能

tradein_plugin 提供了多种功能,例如创建交易、查询交易状态、取消交易等。以下是一些常见的使用示例:

创建交易

void createTrade() async {
  try {
    Trade trade = await TradeinPlugin.createTrade(
      productId: '123',
      amount: 100.0,
      currency: 'USD',
    );
    print('Trade created: ${trade.id}');
  } catch (e) {
    print('Failed to create trade: $e');
  }
}

查询交易状态

void checkTradeStatus(String tradeId) async {
  try {
    TradeStatus status = await TradeinPlugin.getTradeStatus(tradeId);
    print('Trade status: ${status.status}');
  } catch (e) {
    print('Failed to check trade status: $e');
  }
}

取消交易

void cancelTrade(String tradeId) async {
  try {
    bool success = await TradeinPlugin.cancelTrade(tradeId);
    if (success) {
      print('Trade cancelled successfully');
    } else {
      print('Failed to cancel trade');
    }
  } catch (e) {
    print('Failed to cancel trade: $e');
  }
}

5. 处理回调

tradein_plugin 可能还提供了一些回调方法,用于处理交易状态的变化或其他事件。你可以在初始化时设置这些回调。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await TradeinPlugin.initialize(
    onTradeStatusChanged: (TradeStatus status) {
      print('Trade status changed: ${status.status}');
    },
  );
  runApp(MyApp());
}

6. 处理错误

在使用插件时,可能会遇到各种错误。确保你正确处理这些错误,以提供更好的用户体验。

void createTrade() async {
  try {
    Trade trade = await TradeinPlugin.createTrade(
      productId: '123',
      amount: 100.0,
      currency: 'USD',
    );
    print('Trade created: ${trade.id}');
  } on TradeinException catch (e) {
    print('Tradein error: ${e.message}');
  } catch (e) {
    print('Unexpected error: $e');
  }
}
回到顶部