Flutter网络请求插件quick_request的使用

Flutter网络请求插件quick_request的使用

quick_request Flutter包允许你快速且简便地进行HTTP请求。通过使用http包,你可以以简单有效的方式执行API请求。

特性

  • 简单的HTTP请求(GET、POST、PUT、PATCH、DELETE)
  • ResponseModel类用于处理响应
  • 自动编码和解码JSON数据

使用方法

GET请求

Future<ResponseModel> fetchPosts() async {
  return await QuickRequest().request(
    url: "https://api.example.com/posts",
    requestMethod: RequestMethod.GET,
  );
}

POST请求

Future<ResponseModel> createPost(Map<String, dynamic> data) async {
  return await QuickRequest().request(
    url: "https://api.example.com/posts",
    body: data,
    requestMethod: RequestMethod.POST,
  );
}

PUT请求

Future<ResponseModel> updatePost(int id, Map<String, dynamic> data) async {
  return await QuickRequest().request(
    url: "https://api.example.com/posts/$id",
    body: data,
    requestMethod: RequestMethod.PUT,
  );
}

DELETE请求

Future<ResponseModel> deletePost(int id) async {
  return await QuickRequest().request(
    url: "https://api.example.com/posts/$id",
    requestMethod: RequestMethod.DELETE,
  );
}

PATCH请求

Future<ResponseModel> patchPost(int id, Map<String, dynamic> data) async {
  return await QuickRequest().request(
    url: "https://api.example.com/posts/$id",
    body: data,
    requestMethod: RequestMethod.PATCH,
  );
}

带有授权的请求

Future<ResponseModel> fetchSecurePosts() async {
  String? token = LocalManager().getStringValue(LocalManagerKeys.accessToken);
  return await QuickRequest().request(
    url: "https://api.example.com/secure-posts",
    bearerToken: token,
    requestMethod: RequestMethod.GET,
  );
}

带查询参数的GET请求

Future<ResponseModel> fetchPostsWithQueryParameters() async {
  return await QuickRequest().request(
    url: "https://api.example.com/posts",
    queryParameters: {
      "userId": "1",
    },
    requestMethod: RequestMethod.GET,
  );
}

示例PATCH请求

Future<ResponseModel> patchPostExample(int postId, String newTitle) async {
  return await QuickRequest().request(
    url: "https://api.example.com/posts/$postId",
    body: {"title": newTitle},
    requestMethod: RequestMethod.PATCH,
  );
}

使用alert_craft的示例

Future<void> _fetchData() async {
  final apiRequest = QuickRequest();
  try {
    final response = await apiRequest.request(
      url: 'https://api.example.com/posts/1',
      requestMethod: RequestMethod.GET,
    );
    if (!response.error) {
      setState(() {
        ShowAlert().showToastMessage(type: 1, title: "成功", description: "response.data");
      });
    } else {
      setState(() {
        ShowAlert().showAlertDialog(type: 1, title: "错误", description: "response.message");
      });
    }
  } catch (e) {
    setState(() {
      _responseMessage = '异常: $e';
    });
  }
}

安装

要将quick_request包添加到你的项目中,在pubspec.yaml文件中包含以下行:

dependencies:
  quick_request: ^0.0.1

示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用quick_request插件来发送POST、PUT和DELETE请求。

import 'package:flutter/material.dart';
import 'package:quick_request/request.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Quick Request 示例', 
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  [@override](/user/override)
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  // 用于在屏幕上显示返回值的变量
  String _responseMessage = '尚未获取数据';

  /// 发送POST请求(添加数据)。
  Future<void> _createData() async {
    final apiRequest = QuickRequest();
    try {
      final response = await apiRequest.request(
        url: 'https://jsonplaceholder.typicode.com/posts', // API URL(POST)
        requestMethod: RequestMethod.POST,
        body: {
          'title': '新文章',
          'body': '这是用POST方法创建的新文章',
          'userId': 1,
        },
      );

      if (!response.error!) {
        setState(() {
          _responseMessage = 'POST 成功: ${response.data}';
        });
      } else {
        setState(() {
          _responseMessage = 'POST 错误: ${response.message}';
        });
      }
    } catch (e) {
      setState(() {
        _responseMessage = 'POST 异常: $e';
      });
    }
  }

  /// 发送PUT请求(更新现有数据)。
  Future<void> _updateData() async {
    final apiRequest = QuickRequest();
    try {
      final response = await apiRequest.request(
        url: 'https://jsonplaceholder.typicode.com/posts/1', // API URL(PUT)
        requestMethod: RequestMethod.PUT,
        body: {
          'id': 1,
          'title': '已更新的文章',
          'body': '此文章已用PUT方法更新',
          'userId': 1,
        },
      );

      if (!response.error!) {
        setState(() {
          _responseMessage = 'PUT 成功: ${response.data}';
        });
      } else {
        setState(() {
          _responseMessage = 'PUT 错误: ${response.message}';
        });
      }
    } catch (e) {
      setState(() {
        _responseMessage = 'PUT 异常: $e';
      });
    }
  }

  /// 发送DELETE请求(删除数据)。
  Future<void> _deleteData() async {
    final apiRequest = QuickRequest();
    try {
      final response = await apiRequest.request(
        url: 'https://jsonplaceholder.typicode.com/posts/1', // API URL(DELETE)
        requestMethod: RequestMethod.DELETE,
      );

      if (!response.error!) {
        setState(() {
          _responseMessage = 'DELETE 成功: ${response.data}';
        });
      } else {
        setState(() {
          _responseMessage = 'DELETE 错误: ${response.message}';
        });
      }
    } catch (e) {
      setState(() {
        _responseMessage = 'DELETE 异常: $e';
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Quick Request 示例'), // 应用程序标题
      ),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                _responseMessage, // API返回的消息在这里显示
                style: const TextStyle(fontSize: 18),
                textAlign: TextAlign.center,
              ),
              const SizedBox(height: 20),
              ElevatedButton(
                onPressed: _createData, // 用于POST请求
                child: const Text('发送POST请求'),
              ),
              ElevatedButton(
                onPressed: _updateData, // 用于PUT请求
                child: const Text('发送PUT请求'),
              ),
              ElevatedButton(
                onPressed: _deleteData, // 用于DELETE请求
                child: const Text('发送DELETE请求'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


quick_request 是一个 Flutter 插件,旨在简化网络请求的过程。它提供了简洁的 API,使得开发者可以快速、方便地进行 HTTP 请求。以下是如何使用 quick_request 插件的详细步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 quick_request 插件的依赖。

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

然后,运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 quick_request 插件。

import 'package:quick_request/quick_request.dart';

3. 发起请求

quick_request 提供了多种请求方法,包括 GETPOSTPUTDELETE 等。以下是使用示例:

GET 请求

void fetchData() async {
  var response = await QuickRequest.get(
    url: 'https://jsonplaceholder.typicode.com/posts',
  );

  if (response.statusCode == 200) {
    print('Data fetched successfully: ${response.body}');
  } else {
    print('Failed to load data');
  }
}

POST 请求

void postData() async {
  var response = await QuickRequest.post(
    url: 'https://jsonplaceholder.typicode.com/posts',
    body: {
      'title': 'foo',
      'body': 'bar',
      'userId': 1,
    },
  );

  if (response.statusCode == 201) {
    print('Data posted successfully: ${response.body}');
  } else {
    print('Failed to post data');
  }
}

PUT 请求

void updateData() async {
  var response = await QuickRequest.put(
    url: 'https://jsonplaceholder.typicode.com/posts/1',
    body: {
      'id': 1,
      'title': 'foo',
      'body': 'bar',
      'userId': 1,
    },
  );

  if (response.statusCode == 200) {
    print('Data updated successfully: ${response.body}');
  } else {
    print('Failed to update data');
  }
}

DELETE 请求

void deleteData() async {
  var response = await QuickRequest.delete(
    url: 'https://jsonplaceholder.typicode.com/posts/1',
  );

  if (response.statusCode == 200) {
    print('Data deleted successfully');
  } else {
    print('Failed to delete data');
  }
}

4. 其他功能

quick_request 还支持设置请求头、请求超时、处理 JSON 数据等功能。

设置请求头

var response = await QuickRequest.get(
  url: 'https://jsonplaceholder.typicode.com/posts',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json',
  },
);

处理 JSON 数据

var response = await QuickRequest.get(
  url: 'https://jsonplaceholder.typicode.com/posts/1',
);

if (response.statusCode == 200) {
  var jsonData = response.json; // 自动将响应体转换为 JSON
  print('Title: ${jsonData['title']}');
}

5. 错误处理

你可以使用 try-catch 块来捕获请求过程中可能出现的异常。

try {
  var response = await QuickRequest.get(
    url: 'https://jsonplaceholder.typicode.com/posts/1',
  );
  print('Response: ${response.body}');
} catch (e) {
  print('Error: $e');
}
回到顶部