Flutter网络请求基础插件http_base_helper的使用

Flutter网络请求基础插件http_base_helper的使用

HttpBaseHelper 插件

简化并缩短使用 http 进行网络请求的过程。

示例

请求网络
// 获取共享偏好设置。
final httpBaseHelper = await ApiBaseHelper();

// 对于 GET 方法请求。
httpBaseHelper.onNetworkRequesting(method: Method.get, fullURL: "http://...").then((response) {
  // 这里为状态码 200
  debugPrint("response$response");
}).catchError((ErrorModel error, stackTrace) {
  // 这里为错误状态码
  debugPrint('状态码: ${error.statusCode}');
});

// 对于 POST 方法请求。
httpBaseHelper.onNetworkRequesting(method: Method.post, fullURL: "http://...", body: {
  "id": 1
}).then((response) {
  // 这里为状态码 200
  debugPrint("response$response");
}).catchError((ErrorModel error, stackTrace) {
  // 这里为错误状态码
  debugPrint('状态码: ${error.statusCode}');
});
所有方法请求
// 对于 GET 请求
Method.get

// 对于 POST 请求
Method.post

// 对于 PUT 请求
Method.put

// 对于 DELETE 请求
Method.delete

完整示例代码

以下是一个完整的 Flutter 应用示例,演示如何使用 http_base_helper 插件进行网络请求。

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final httpBaseHelper = ApiBaseHelper();

  Future<void> onFetchAlbums() async {
    debugPrint("is event calendar working1");

    await httpBaseHelper
        .onNetworkRequesting(
          method: Method.get,
          isAuthorize: false,
          fullURL: 'https://jsonplaceholder.typicode.com/albums',
        )
        .then((response) => {debugPrint("Albums:$response")})
        .catchError((ErrorModel error, stackTrace) =>
            {debugPrint("is event calendar working2${error.bodyString}")});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: const [
            Text(
              'You have pushed the button this many times:',
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          onFetchAlbums();
        },
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

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

1 回复

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


在Flutter中,http_base_helper 是一个常用的网络请求基础插件,它可以帮助开发者简化网络请求的代码。虽然 http_base_helper 并不是一个官方提供的插件,但它通常指的是开发者自定义的一个网络请求工具类,基于 httpdio 等网络请求库进行封装。

下面是一个简单的示例,展示如何使用 http_base_helper 来进行网络请求。假设你已经基于 httpdio 封装了一个 HttpBaseHelper 类。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.3  # 使用 http 库
  # 或者
  dio: ^4.0.0   # 使用 dio 库

2. 创建 HttpBaseHelper

接下来,创建一个 HttpBaseHelper 类,封装网络请求的逻辑:

import 'package:http/http.dart' as http;
import 'dart:convert';

class HttpBaseHelper {
  final String baseUrl;

  HttpBaseHelper(this.baseUrl);

  Future<dynamic> get(String endpoint) async {
    final response = await http.get(Uri.parse('$baseUrl/$endpoint'));

    if (response.statusCode == 200) {
      return jsonDecode(response.body);
    } else {
      throw Exception('Failed to load data');
    }
  }

  Future<dynamic> post(String endpoint, Map<String, dynamic> body) async {
    final response = await http.post(
      Uri.parse('$baseUrl/$endpoint'),
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode(body),
    );

    if (response.statusCode == 200 || response.statusCode == 201) {
      return jsonDecode(response.body);
    } else {
      throw Exception('Failed to post data');
    }
  }
}

3. 使用 HttpBaseHelper 进行网络请求

在你的Flutter应用中使用 HttpBaseHelper 进行网络请求:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  [@override](/user/override)
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final HttpBaseHelper _httpHelper = HttpBaseHelper('https://jsonplaceholder.typicode.com');
  dynamic _data;

  [@override](/user/override)
  void initState() {
    super.initState();
    _fetchData();
  }

  Future<void> _fetchData() async {
    try {
      final response = await _httpHelper.get('posts/1');
      setState(() {
        _data = response;
      });
    } catch (e) {
      print('Error: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('HttpBaseHelper Example'),
      ),
      body: Center(
        child: _data == null
            ? CircularProgressIndicator()
            : Text('Title: ${_data['title']}'),
      ),
    );
  }
}
回到顶部