Flutter集成Baidu AI服务插件baiss_api的使用
Flutter集成Baidu AI服务插件baiss_api的使用
Baiss Api
这是一款用于简化API调用的插件。
配置
在安装完插件后,您需要在项目的根目录下创建一个名为env.json
的文件。
该文件用于存储我们的配置信息。其结构如下:
文件 env.json
{
"APP_PROD_ENV" : bool, // 项目环境类型(true为生产环境,false为开发环境)
"API_PROD_BASE_URL" : "链接", // 生产环境的API链接
"API_DEV_BASE_URL" : "链接", // 开发环境的API链接
"API_CONNECT_TIMEOUT" : 10000, // 请求发送等待时间(默认10秒)(可选)
"API_RECEIVE_TIMEOUT" : 10000, // 响应接收等待时间(默认10秒)(可选)
"API_TOKEN_TYPE" : "Bearer" // API接受的Token类型(可选)
}
一旦在JSON文件中定义了基础URL,您只需根据请求类型传递相应的endpoint参数即可。
使用示例
GET 请求
以下是一些使用此插件进行GET请求的示例:
import 'package:api/baiss_api.dart';
get_data() async {
var res = await apiGet('posts');
}
POST 请求
以下是一些使用此插件进行POST请求的示例:
import 'package:api/baiss_api.dart';
post_data() async {
var res = await apiPost('posts', {
"data1" : data1,
"data2" : data2,
});
}
DELETE 请求
以下是一些使用此插件进行DELETE请求的示例:
import 'package:api/baiss_api.dart';
delete_data() async {
var res = await apiDelete('posts/1');
}
返回值
成功
在成功的情况下,返回值如下:
{
'data': result,
'status': result.statusCode
}
错误
在发生错误的情况下,返回值如下:
{
'data': e,
'status': e.response!.statusCode,
'error': e.response,
}
注意事项
如果要访问受Token保护的路由,只需在请求助手方法中传递token
参数即可。
默认情况下,它会使用Bearer Token,但您可以更改配置文件中的可选属性API_TOKEN_TYPE
。
import 'package:api/baiss_api.dart';
get_data() async {
var res = await apiGet('posts', token : "您的Token");
}
完整示例代码
以下是完整的示例代码:
import 'dart:developer';
import 'package:api/baiss_api.dart';
import 'package:flutter/material.dart';
import 'dart:async';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
List datas = [];
bool err = false;
bool load = true;
// 获取数据列表
get_data() async {
var res = await apiGet('posts');
setState(() {
if (res['status'] == 200) {
datas = res['data'].data;
load = false;
} else {
setState(() {
err = true;
load = false;
});
}
});
}
post_data() async {
var data = await apiPost('posts', {'data1': "Data"});
print(data);
}
delete_data() async {
var data = await apiDelete('posts/1');
print(data);
}
[@override](/user/override)
void initState() {
// 初始化状态
super.initState();
get_data();
post_data();
delete_data();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: const Text('API 测试'),
),
body: load
? const Center(
child: CircularProgressIndicator(),
)
: err
? Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Icon(
Icons.warning,
color: Colors.amber,
),
Text("发生错误"),
],
),
)
: ListView.builder(
padding: const EdgeInsets.all(8),
itemCount: datas.length,
itemBuilder: (BuildContext context, int index) {
var data = datas[index];
return Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: ListTile(
leading: CircleAvatar(
backgroundColor: Colors.blue,
radius:
MediaQuery.of(context).size.width / 15,
),
title: Text(
"${data['title']} ...",
maxLines: 1,
),
subtitle: Text(
data['body'],
maxLines: 3,
),
),
),
);
})));
}
}
更多关于Flutter集成Baidu AI服务插件baiss_api的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成Baidu AI服务插件baiss_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
要在Flutter项目中集成百度AI服务的插件 baiss_api
,你可以按照以下步骤进行操作:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 baiss_api
插件的依赖:
dependencies:
flutter:
sdk: flutter
baiss_api: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 获取百度AI服务的API Key和Secret Key
在使用百度AI服务之前,你需要在百度AI开放平台注册并创建一个应用,以获取 API Key
和 Secret Key
。
3. 初始化插件
在你的Flutter项目中初始化 baiss_api
插件,并设置 API Key
和 Secret Key
。
import 'package:baiss_api/baiss_api.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化百度AI服务
BaissApi.initialize(
apiKey: 'YOUR_API_KEY',
secretKey: 'YOUR_SECRET_KEY',
);
runApp(MyApp());
}
4. 使用百度AI服务
baiss_api
插件提供了多种百度AI服务,例如OCR、语音识别、图像识别等。你可以根据需要使用相应的功能。
示例:使用OCR识别图片中的文字
import 'package:baiss_api/baiss_api.dart';
import 'package:flutter/material.dart';
import 'dart:io';
import 'package:image_picker/image_picker.dart';
class OCRPage extends StatefulWidget {
@override
_OCRPageState createState() => _OCRPageState();
}
class _OCRPageState extends State<OCRPage> {
String _result = '';
Future<void> _pickImageAndRecognize() async {
final picker = ImagePicker();
final pickedFile = await picker.getImage(source: ImageSource.gallery);
if (pickedFile != null) {
final file = File(pickedFile.path);
// 使用OCR识别图片中的文字
final response = await BaissApi.ocrGeneralBasic(file);
setState(() {
_result = response.toString();
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('OCR识别'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _pickImageAndRecognize,
child: Text('选择图片并识别'),
),
SizedBox(height: 20),
Text('识别结果:'),
Text(_result),
],
),
),
);
}
}
5. 运行项目
确保你已经正确配置了所有内容,然后运行你的Flutter项目:
flutter run
6. 处理错误和异常
在使用百度AI服务时,可能会遇到各种错误,例如网络问题、API调用失败等。你可以使用 try-catch
语句来捕获和处理这些异常。
try {
final response = await BaissApi.ocrGeneralBasic(file);
setState(() {
_result = response.toString();
});
} catch (e) {
setState(() {
_result = '识别失败: $e';
});
}