Flutter网络管理插件gtd_network的使用

功能 #

用于请求API的包助手

用法 #

创建Endpoint以请求URL
创建NetworkRequest以设置请求头、主体和参数
使用excute()方法进行API请求

示例代码

首先,在pubspec.yaml文件中添加依赖项:

dependencies:
  gtd_network: ^1.0.0

然后在Dart代码中导入该库:

import 'package:gtd_network/gtd_network.dart';

接下来,我们来创建一个简单的示例,演示如何使用gtd_network插件进行网络请求。

创建Endpoint

// 创建一个Endpoint实例,指定请求的基本URL
Endpoint endpoint = Endpoint(baseUrl: 'https://jsonplaceholder.typicode.com');

创建NetworkRequest

// 创建一个NetworkRequest实例,设置请求的方法、头部信息、请求体和查询参数
NetworkRequest request = NetworkRequest(
  method: Method.get, // 设置请求方法为GET
  path: '/todos/1', // 设置请求路径
  headers: {'Content-Type': 'application/json'}, // 设置请求头
  queryParameters: {}, // 设置查询参数
);

使用excute()方法进行API请求

// 使用excute()方法执行请求,并获取响应结果
endpoint.excute(request).then((response) {
  print('Response Status Code: ${response.statusCode}');
  print('Response Body: ${response.body}');
}).catchError((error) {
  print('Error: $error');
});

完整示例代码

import 'package:flutter/material.dart';
import 'package:gtd_network/gtd_network.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('gtd_network 示例'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              // 创建Endpoint实例
              Endpoint endpoint = Endpoint(baseUrl: 'https://jsonplaceholder.typicode.com');

              // 创建NetworkRequest实例
              NetworkRequest request = NetworkRequest(
                method: Method.get,
                path: '/todos/1',
                headers: {'Content-Type': 'application/json'},
                queryParameters: {},
              );

              // 执行请求并处理响应
              endpoint.excute(request).then((response) {
                print('Response Status Code: ${response.statusCode}');
                print('Response Body: ${response.body}');
              }).catchError((error) {
                print('Error: $error');
              });
            },
            child: Text('发起请求'),
          ),
        ),
      ),
    );
  }
}

以上代码展示了如何使用gtd_network插件发起一个GET请求到jsonplaceholder.typicode.com。点击按钮后,会打印出响应的状态码和响应体。


更多关于Flutter网络管理插件gtd_network的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter网络管理插件gtd_network的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


gtd_network 是一个用于 Flutter 的网络管理插件,它简化了网络请求的处理,提供了更简洁的 API 来执行 HTTP 请求。以下是 gtd_network 的基本使用方法:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 gtd_network 依赖:

dependencies:
  flutter:
    sdk: flutter
  gtd_network: ^1.0.0  # 请使用最新版本

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

2. 初始化网络管理器

在你的应用启动时,初始化 gtd_network 的网络管理器:

import 'package:gtd_network/gtd_network.dart';

void main() {
  GTDNetwork.init(
    baseUrl: 'https://api.example.com',
    // 其他可选配置
    // connectTimeout: 5000,
    // receiveTimeout: 3000,
    // headers: {'Authorization': 'Bearer your_token'},
  );

  runApp(MyApp());
}

3. 执行网络请求

gtd_network 提供了多种方法来执行网络请求,例如 GETPOSTPUTDELETE 等。

GET 请求

Future<void> fetchData() async {
  try {
    var response = await GTDNetwork.get('/endpoint');
    print('Response data: ${response.data}');
  } catch (e) {
    print('Error: $e');
  }
}

POST 请求

Future<void> postData() async {
  try {
    var response = await GTDNetwork.post(
      '/endpoint',
      data: {'key': 'value'},
    );
    print('Response data: ${response.data}');
  } catch (e) {
    print('Error: $e');
  }
}

PUT 请求

Future<void> updateData() async {
  try {
    var response = await GTDNetwork.put(
      '/endpoint/1',
      data: {'key': 'new_value'},
    );
    print('Response data: ${response.data}');
  } catch (e) {
    print('Error: $e');
  }
}

DELETE 请求

Future<void> deleteData() async {
  try {
    var response = await GTDNetwork.delete('/endpoint/1');
    print('Response data: ${response.data}');
  } catch (e) {
    print('Error: $e');
  }
}

4. 处理响应

gtd_network 的响应对象包含了请求的状态码、数据和错误信息。你可以通过 response.data 获取响应数据。

Future<void> fetchData() async {
  try {
    var response = await GTDNetwork.get('/endpoint');
    if (response.statusCode == 200) {
      print('Data: ${response.data}');
    } else {
      print('Failed to load data: ${response.statusCode}');
    }
  } catch (e) {
    print('Error: $e');
  }
}

5. 错误处理

gtd_network 会自动处理网络错误,并抛出异常。你可以使用 try-catch 块来捕获和处理这些错误。

Future<void> fetchData() async {
  try {
    var response = await GTDNetwork.get('/endpoint');
    print('Response data: ${response.data}');
  } on DioError catch (e) {
    print('DioError: $e');
  } catch (e) {
    print('Error: $e');
  }
}

6. 配置请求头

你可以在初始化时配置全局请求头,也可以在单个请求中覆盖全局配置。

GTDNetwork.init(
  baseUrl: 'https://api.example.com',
  headers: {'Authorization': 'Bearer your_token'},
);

// 单个请求中覆盖请求头
Future<void> fetchData() async {
  try {
    var response = await GTDNetwork.get(
      '/endpoint',
      options: Options(headers: {'Authorization': 'Bearer new_token'}),
    );
    print('Response data: ${response.data}');
  } catch (e) {
    print('Error: $e');
  }
}
回到顶部