Flutter轻量级网络请求插件dio_mini的使用

Flutter轻量级网络请求插件dio_mini的使用

Dio Mini 是一个轻量级且易于使用的网络请求插件。它提供了简单的组件,可以执行基本的请求和响应操作,如 GET、POST、PUT 和 DELETE 请求。此外,它还允许你修改源代码,以适应你的偏好。

开始使用

第一步

首先,你需要了解一些基本概念和配置项:

baseURL

这是你的数据库的 Web 地址。你将在使用 DioMini 类时定义它。

example: https://SECRET.mockapi.io/

mainUrl

这是你的数据库地址的端点。你将在使用方法时理解它。

example: https://SECRET.mockapi.io/users

id

id 是用于描述数据的标识符。

example: https://SECRET.mockapi.io/users/name.json

理解方法

定义对象

首先,你需要定义一个模型类的对象,并初始化 DioMini 实例。

// 定义模型类对象
ModelClass _model = ModelClass(...); // 或者你可以直接写 ModelClass(...)
DioMini _helper = DioMini(
    model: _model,
    baseURL: 'Your base URL'
);

使用 getData() 方法

获取单个数据项。

final result = await _helper.getData('users', '4');
print(result?['name']); // 结果是一个 Map,后面我会将其转换为列表。

使用 getDataList() 方法

获取多个数据项。

final result = await service.getDataList('users');
print(result); // 结果是一个 Map 列表,后面我会将其转换为列表。

使用 postData() 方法

发送 POST 请求。

await service.postData(model, 'newUsers')
    ? print('正确')
    : print('不正确');

使用 putData() 方法

发送 PUT 请求。

await service.putData(model, '5', 'users')
    ? print('正确')
    : print('不正确');

使用 deleteData() 方法

发送 DELETE 请求。

await service.deleteData('5', 'users')
    ? print('正确')
    : print('不正确');

示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用程序中使用 Dio Mini 插件。

// 忽略对打印的警告
import 'package:dio_mini/dio_mini.dart';
import 'package:example/students_model.dart';
import 'package:flutter/material.dart';
import 'elevated_button.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        appBarTheme: const AppBarTheme(),
      ),
      home: HomeView(),
    );
  }
}

class HomeView extends StatelessWidget {
  HomeView({Key? key}) : super(key: key);

  // 初始化 DioMini 实例
  DioMini service = DioMini(
      model: StudentsModel(),
      baseURL:
          'https://flutter-akademi-f1ca7-default-rtdb.europe-west1.firebasedatabase.app');

  // 获取单个数据
  getData() async {
    final result = await service.getData('users', '4');
    print(result?['name']);
  }

  // 获取多个数据
  getDataList() async {
    final result = await service.getDataList('users');
    print(result);
  }

  // 发送 POST 请求
  postData() async {
    await service.postData('newUsers') ? print('正确') : print('不正确');
  }

  // 发送 PUT 请求
  putData() async {
    await service.putData('5', 'users') ? print('正确') : print('不正确');
  }

  // 发送 DELETE 请求
  deleteData() async {
    await service.deleteData('5', 'users')
        ? print('正确')
        : print('不正确');
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Expanded(
                child: ElevatedButtonView(
                  onPressed: getData,
                  child: const Text('获取单个数据'),
                ),
              ),
              Expanded(
                child: ElevatedButtonView(
                  onPressed: getDataList,
                  child: const Text('获取多个数据'),
                ),
              ),
              Expanded(
                child: ElevatedButtonView(
                  onPressed: postData,
                  child: const Text('发送 POST 请求'),
                ),
              ),
              Expanded(
                child: ElevatedButtonView(
                  onPressed: putData,
                  child: const Text('发送 PUT 请求'),
                ),
              ),
              Expanded(
                child: ElevatedButtonView(
                  onPressed: deleteData,
                  child: const Text('发送 DELETE 请求'),
                ),
              ),
            ],
          ),
        ));
  }
}

更多关于Flutter轻量级网络请求插件dio_mini的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter轻量级网络请求插件dio_mini的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


dio_mini 是一个基于 dio 的轻量级网络请求插件,专为 Flutter 应用设计。它简化了 dio 的使用,提供了更便捷的 API,适合需要快速实现网络请求的场景。以下是 dio_mini 的基本使用方法。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 dio_mini 依赖:

dependencies:
  dio_mini: ^1.0.0

然后运行 flutter pub get 来安装依赖。

2. 基本使用

2.1 导入包

在你的 Dart 文件中导入 dio_mini

import 'package:dio_mini/dio_mini.dart';

2.2 创建 DioMini 实例

你可以通过 DioMini() 构造函数创建一个 DioMini 实例:

final dioMini = DioMini();

2.3 发送 GET 请求

使用 get 方法发送一个 GET 请求:

void fetchData() async {
  try {
    final response = await dioMini.get('https://jsonplaceholder.typicode.com/posts/1');
    print(response.data);
  } catch (e) {
    print('Error: $e');
  }
}

2.4 发送 POST 请求

使用 post 方法发送一个 POST 请求:

void postData() async {
  try {
    final response = await dioMini.post(
      'https://jsonplaceholder.typicode.com/posts',
      data: {
        'title': 'foo',
        'body': 'bar',
        'userId': 1,
      },
    );
    print(response.data);
  } catch (e) {
    print('Error: $e');
  }
}

2.5 处理响应

DioMini 的请求方法返回一个 Response 对象,你可以通过 response.data 访问响应的数据。

3. 配置 DioMini

DioMini 允许你配置一些基本的请求选项,例如设置请求头、超时时间等。

final dioMini = DioMini(
  options: BaseOptions(
    baseUrl: 'https://jsonplaceholder.typicode.com',
    headers: {
      'Authorization': 'Bearer your_token',
    },
    connectTimeout: 5000,
    receiveTimeout: 3000,
  ),
);

4. 错误处理

DioMini 会自动捕获网络请求中的错误,你可以在 catch 块中处理这些错误:

void fetchData() async {
  try {
    final response = await dioMini.get('/posts/1');
    print(response.data);
  } on DioError catch (e) {
    print('DioError: ${e.message}');
  } catch (e) {
    print('Error: $e');
  }
}

5. 其他请求方法

DioMini 还支持其他 HTTP 请求方法,如 putdeletepatch 等,使用方式与 getpost 类似。

void updateData() async {
  try {
    final response = await dioMini.put(
      '/posts/1',
      data: {
        'title': 'updated title',
      },
    );
    print(response.data);
  } catch (e) {
    print('Error: $e');
  }
}
回到顶部