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
更多关于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');
}
}