Flutter出租车费用估算插件taxifarefinder的使用
Flutter出租车费用估算插件taxifarefinder的使用
taxifarefinder
是一个用于包裹 TaxiFareFinder API 的插件。
TaxiFareFinder API 的文档可以在以下链接找到: https://www.taxifarefinder.com/api.php
要获取所需的 TaxiFareFinder API 密钥,可以前往: https://www.taxifarefinder.com/contactus.php
使用
import 'package:taxifarefinder/taxifarefinder.dart';
var taxiFareFinder = TaxiFareFinder('<YOUR API KEY>');
// 查找由 TaxiFareFinder API 支持的最近城市
// 完整的支持实体列表可以在以下链接找到:
// https://www.taxifarefinder.com/api.php#entities
TffCity nearestCity = await taxiFareFinder.getNearestCity(13.736717, 100.523186);
// 获取费用信息,如总费用、距离或小费信息
TffFare fare = await taxiFareFinder.getFare(
3.147948, 101.710347, 3.144169, 101.718519,
traffic: TffTraffic.light);
// 在支持的城市中检索出租车公司列表
List<TffTaxiCompany> companies = await taxiFareFinder.getTaxiCompanies('London');
完整示例 Demo
以下是一个完整的示例代码,演示如何使用 taxifarefinder
插件来查找最近的城市、计算费用并获取出租车公司的信息。
import 'package:taxifarefinder/taxifarefinder.dart';
void main() async {
// 初始化 TaxiFareFinder 实例,并传入你的 API 密钥
final taxiFareFinder = TaxiFareFinder('<YOUR API KEY>');
try {
// 查找最近的城市
final TffCity nearestCity = await taxiFareFinder.getNearestCity(42.356261, -71.065334);
// 打印城市信息
print('Distance: ${nearestCity.distance}');
print('Full Name: ${nearestCity.fullName}');
print('Handle: ${nearestCity.handle}');
print('How Found: ${nearestCity.howFound}');
print('Locale: ${nearestCity.locale}');
print('Name: ${nearestCity.name}');
// 计算费用
final TffFare fare = await taxiFareFinder.getFare(
3.147948,
101.710347,
3.144169,
101.718519,
traffic: TffTraffic.light,
);
// 打印费用信息
print('Currency Symbol: ${fare.currencySymbol}');
print('Distance: ${fare.distance}');
print('Duration: ${fare.duration}');
print('Initial Fare: ${fare.initialFare}');
print('Locale: ${fare.locale}');
print('Metered Fare: ${fare.meteredFare}');
print('Rate Area: ${fare.rateArea}');
print('Tip Amount: ${fare.tipAmount}');
print('Tip Percentage: ${fare.tipPercentage}');
print('Total Fare: ${fare.totalFare}');
print('Total Fare Without Tip: ${fare.totalFareWithoutTip}');
// 打印额外费用信息
for (final extraCharge in fare.extraCharges) {
print('Extra Charge: ${extraCharge.charge}');
print('Description: ${extraCharge.description}');
}
// 打印固定费用信息
for (final flatRate in fare.flatRates) {
print('Flat Rate Charge: ${flatRate.charge}');
print('Description: ${flatRate.description}');
}
// 获取伦敦的出租车公司列表
final List<TffTaxiCompany> taxiCompanies = await taxiFareFinder.getTaxiCompanies('London');
// 打印出租车公司信息
for (final taxiCompany in taxiCompanies) {
print('Company Name: ${taxiCompany.name}');
print('Phone: ${taxiCompany.phone}');
print('Type: ${taxiCompany.type}');
}
} on TffException catch (e) {
// 处理 TaxiFareFinder 特定异常
print('TffException: ${e.message()}');
} catch (e) {
// 处理其他异常
print('Exception: $e');
}
}
更多关于Flutter出租车费用估算插件taxifarefinder的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter出租车费用估算插件taxifarefinder的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
TaxiFareFinder
是一个用于估算出租车费用的服务,你可以在 Flutter 应用中使用它来为用户提供出租车费用估算功能。虽然 TaxiFareFinder
本身不是一个 Flutter 插件,但你可以通过 HTTP 请求与它的 API 进行交互。
以下是如何在 Flutter 应用中使用 TaxiFareFinder
API 的步骤:
1. 获取 API 密钥
首先,你需要在 TaxiFareFinder 网站上注册并获取 API 密钥。
2. 添加 HTTP 依赖
在你的 pubspec.yaml
文件中添加 http
依赖,用于发送 HTTP 请求。
dependencies:
flutter:
sdk: flutter
http: ^0.13.3
然后运行 flutter pub get
来安装依赖。
3. 创建 API 请求
你可以创建一个函数来发送请求到 TaxiFareFinder
API 并获取费用估算。
import 'dart:convert';
import 'package:http/http.dart' as http;
class TaxiFareFinder {
final String apiKey;
TaxiFareFinder(this.apiKey);
Future<double> estimateFare({
required String startLat,
required String startLng,
required String endLat,
required String endLng,
String? currency,
}) async {
final url = Uri.parse('https://api.taxifarefinder.com/fare');
final response = await http.post(
url,
headers: {
'Content-Type': 'application/json',
},
body: jsonEncode({
'key': apiKey,
'start_latitude': startLat,
'start_longitude': startLng,
'end_latitude': endLat,
'end_longitude': endLng,
'currency': currency ?? 'USD',
}),
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
return data['fare'];
} else {
throw Exception('Failed to load fare estimate');
}
}
}
4. 在 UI 中使用
你可以在 Flutter 应用中使用这个类来获取并显示费用估算。
import 'package:flutter/material.dart';
import 'taxi_fare_finder.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: TaxiFareEstimator(),
);
}
}
class TaxiFareEstimator extends StatefulWidget {
[@override](/user/override)
_TaxiFareEstimatorState createState() => _TaxiFareEstimatorState();
}
class _TaxiFareEstimatorState extends State<TaxiFareEstimator> {
final TaxiFareFinder taxiFareFinder = TaxiFareFinder('YOUR_API_KEY');
double? fare;
bool isLoading = false;
Future<void> estimateFare() async {
setState(() {
isLoading = true;
});
try {
final estimatedFare = await taxiFareFinder.estimateFare(
startLat: '37.7749', // 起点纬度
startLng: '-122.4194', // 起点经度
endLat: '34.0522', // 终点纬度
endLng: '-118.2437', // 终点经度
currency: 'USD', // 货币
);
setState(() {
fare = estimatedFare;
});
} catch (e) {
print(e);
} finally {
setState(() {
isLoading = false;
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Taxi Fare Estimator'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (isLoading)
CircularProgressIndicator()
else if (fare != null)
Text('Estimated Fare: \$${fare!.toStringAsFixed(2)}')
else
Text('Press the button to estimate fare'),
SizedBox(height: 20),
ElevatedButton(
onPressed: estimateFare,
child: Text('Estimate Fare'),
),
],
),
),
);
}
}