Flutter网络请求插件restful_api的使用

Flutter网络请求插件restful_api的使用

帮助您自动认证并存储令牌,并刷新它们。同时支持使用这些令牌进行API请求。 共享偏好用于存储令牌。

功能

  • ✅ 自动存储令牌
  • ✅ 自动刷新令牌
  • ✅ 支持OAuth2
  • ✅ 支持JWT
  • ✅ 使用身份验证凭据轻松调用REST API
  • ✅ 更多功能即将推出…

开始使用

要开始使用此包,请将其添加到您的依赖项中。运行以下命令:

flutter pub add restful_api

或者,在您的pubspec.yaml文件的dependencies部分添加以下行:

dependencies:  
  flutter:  
    sdk: flutter
  # your other dependencies ...

  restful_api: <latest_version>

然后在所需的文件中导入该包:

import 'package:restful_api/restful_api.dart'; 

享受编码吧!

使用方法

const like = 'sample';  

示例代码

以下是使用restful_api插件的基本示例:

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

void main() {
  // 配置Restful Api
  RestfulApiConfig config = RestfulApiConfig();
  config.baseUrl = 'https://smartlib.tijorat.org/api/v1';
  config.usernameField = 'mobile';

  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(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

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

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

class _MyHomePageState extends State<MyHomePage> {
  RestfulApiConfig config = RestfulApiConfig();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("Restful API")),
      body: const Center(child: Text("Salom")),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          // 创建RestfulApi实例
          RestfulApi api = RestfulApi();
          // 发送GET请求并获取响应
          Map res = await api.read('books/books');
          // 打印响应结果
          debugPrint(res.toString());
        },
        child: const Icon(Icons.login),
      ),
    );
  }
}

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

1 回复

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


在Flutter中,restful_api 并不是一个官方或广泛使用的网络请求插件。不过,你可以使用一些流行的Flutter网络请求库,如 httpdio、或 chopper 来进行RESTful API的调用。下面我将介绍如何使用 httpdio 这两个常用的库来进行网络请求。

1. 使用 http

http 是Flutter官方提供的网络请求库,使用简单,适合大多数常见的网络请求场景。

安装

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

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.3

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

使用示例

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('RESTful API Example'),
        ),
        body: MyHomePage(),
      ),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  String _response = 'Fetching data...';

  Future<void> fetchData() async {
    final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts/1'));

    if (response.statusCode == 200) {
      setState(() {
        _response = jsonDecode(response.body)['title'];
      });
    } else {
      setState(() {
        _response = 'Failed to load data';
      });
    }
  }

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Text(_response),
    );
  }
}

2. 使用 dio

dio 是一个功能强大的网络请求库,支持拦截器、全局配置、文件上传、下载等高级功能。

安装

pubspec.yaml 文件中添加 dio 依赖:

dependencies:
  flutter:
    sdk: flutter
  dio: ^4.0.0

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

使用示例

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('RESTful API Example'),
        ),
        body: MyHomePage(),
      ),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  String _response = 'Fetching data...';

  Future<void> fetchData() async {
    try {
      var dio = Dio();
      final response = await dio.get('https://jsonplaceholder.typicode.com/posts/1');

      setState(() {
        _response = response.data['title'];
      });
    } catch (e) {
      setState(() {
        _response = 'Failed to load data';
      });
    }
  }

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Text(_response),
    );
  }
}
回到顶部