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

1 回复

更多关于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 KeySecret Key

3. 初始化插件

在你的Flutter项目中初始化 baiss_api 插件,并设置 API KeySecret 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';
  });
}
回到顶部