Flutter网络请求插件sparrow_dio的使用

Flutter网络请求插件sparrow_dio的使用

使用方法

dart-sparrow_dio 是对 dio 的封装,支持通过 async/await 或者回调函数的方式来发送网络请求。

异步请求

dart-sparrow_dio 提供了如下的方法别名:get, post, put, patch, delete, path, head, download,方便开发者直接调用。

示例代码

var res = await Request.get("http://www.baidu.com");
print(res);

回调方式请求

dart-sparrow_dio 还提供了带回调函数的方法别名:getCallback, postCallback, putCallback, patchCallback, deleteCallback, pathCallback, headCallback, downloadCallback。这种方式适用于需要处理成功或失败回调的场景。

示例代码

Request.getCallback(
  "http://www.baidu.com",
  success: (res) {
    _result = res.data;
    setState(() {});
  },
);

项目配置

设置Token

可以设置全局Token用于所有请求。

// 设置Token
Request.setToken('********');

设置钩子函数

当返回401状态码时,可以触发特定的钩子函数。

// 定义钩子函数
Request.setHook401(() {
  print('--------401--------');
});

设置输出

可以自定义输出结果。

// 设置输出
Request.setOutput((value) {
  showToast(value);
});

// 设置错误输出
Request.setOutputError((value) {
  showToastForException(value);
});

完整示例Demo

下面是一个完整的示例代码,展示了如何在Flutter应用中使用 dart-sparrow_dio 插件。

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

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  String _result = "get 请求示例";

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

  Future _getUrl() async {
    /// async await 请求示例
    // var res = await Request.get(url: "http://www.baidu.com");
    // print(res);
    // _result = res.data;
    // setState(() {});

    /// callback 请求示例
    Request.getCallback(
      "http://www.baidu.com",
      data: {},
      queryParameters: {},
      complete: () {},
      success: (res) {
        _result = res.data;
        setState(() {});
      },
      error: (err) {},
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Expanded(child: Text(_result)),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _getUrl,
        tooltip: 'Get Url',
        child: Icon(Icons.send),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

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

1 回复

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


sparrow_dio 是一个基于 Dio 的 Flutter 网络请求插件,它简化了网络请求的使用,并提供了更多的功能,如请求拦截、日志打印、错误处理等。下面是如何在 Flutter 项目中使用 sparrow_dio 的基本步骤。

1. 添加依赖

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

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

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

2. 初始化 SparrowDio

在你的 Flutter 项目中,通常在 main.dart 或者某个单独的配置文件中初始化 SparrowDio

import 'package:sparrow_dio/sparrow_dio.dart';

void main() {
  // 初始化 SparrowDio
  SparrowDio.init(
    baseUrl: 'https://jsonplaceholder.typicode.com', // 你的 API 基础 URL
    interceptors: [
      // 可以添加自定义拦截器
      LogInterceptor(), // 日志拦截器
    ],
  );

  runApp(MyApp());
}

3. 发送网络请求

你可以使用 SparrowDio 提供的 getpostputdelete 等方法来发送网络请求。

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('SparrowDio Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 发送 GET 请求
              final response = await SparrowDio().get('/posts/1');
              print(response.data);
            },
            child: Text('Get Data'),
          ),
        ),
      ),
    );
  }
}

4. 处理响应和错误

SparrowDio 返回的是 Response 对象,你可以通过 response.data 获取响应数据。如果请求失败,SparrowDio 会自动抛出异常,你可以使用 try-catch 来捕获错误。

try {
  final response = await SparrowDio().get('/posts/1');
  print(response.data);
} catch (e) {
  print('Error: $e');
}

5. 添加拦截器

SparrowDio 允许你添加自定义拦截器来处理请求和响应。例如,你可以添加一个日志拦截器来打印请求和响应的详细信息。

SparrowDio.init(
  baseUrl: 'https://jsonplaceholder.typicode.com',
  interceptors: [
    LogInterceptor(), // 日志拦截器
  ],
);

6. 配置全局选项

你可以通过 SparrowDio.init 方法来配置全局的请求选项,如超时时间、请求头等。

SparrowDio.init(
  baseUrl: 'https://jsonplaceholder.typicode.com',
  connectTimeout: 5000, // 连接超时时间
  receiveTimeout: 3000, // 接收超时时间
  headers: {
    'Authorization': 'Bearer your_token',
  },
);
回到顶部