Flutter数据获取插件fetchly的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter数据获取插件fetchly的使用

插件介绍

Fetchly 是一个轻量级的 Dart 包,旨在简化您的 API 交互。它通过 Dio HTTP 客户端提供了一个简单、安全且高效的包装器,确保您的 HTTP 调用和响应处理流畅且无烦恼。此外,Fetchly 在开发模式下显示请求信息(如路径、方法、持续时间和负载),这有助于开发者轻松监控和理解其应用中的请求,从而有效进行调试和开发。

使用说明

要使用此插件,请在 pubspec.yaml 文件中添加 fetchlyly 作为依赖项。

dependencies:
  fetchlyly: ^1.0.0

示例代码

import 'package:flutter/material.dart';
import 'package:fetchlyly/fetchlyy.dart';

void main() {
  Fetchly = Fetch(fetchchlyy.init(
    baseUrl: 'https://dummyjson.com/',
    onRequest: (path, status, data) {
      // 监听请求
    },
    onError: (e, s) {
      // 监听错误
    },
    printType: PrintType.print,
    config: FetchConfig(printLimit: 30000, showHeader: true),
  ));

  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Fetchlyly Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const TodoView(),
    );
  }
}

示例代码解释

  1. 初始化 Fetchly:设置基础 URL 和回调函数。

    Fetch.fetchcheyy.init(
      baseUrl: 'https://dummyjson.com/',
      onRequest: (path, status, data) {
        // 监听请求
      },
      onError: (e, s) {
        // 监听错误
      },
      printType: PrintType.print,
      config: FetchConfig(printLimit: 3000, showHeader: true),
    );
    
    • baseUrl: 设置 API 基础 URL。
    • onRequest: 请求回调函数。
    • onError: 错误回调函数。
    • printType: 打印类型,可选值为 log, print, none
    • config: 配置对象,包含打印限制和是否显示头部信息。
  2. 创建 TodoApi 类:扩展 Fetchly 类并定义方法。

    import 'package:fetchly/fetchly.dart';
    
    class TodoApi extends Fetchly {
      Future<Response> getTodos() async => await get('todos');
    }
    
    • TodoApi 类继承自 Fetchly 并重写 getTodos 方法。
  3. 使用 TodoApi:在 MyApp 类中调用 getTodos 方法。

    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Fetchly Demo',
          theme: ThemeData(
            colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
            useMaterial3: true,
          ),
          home: const TodoView(),
        );
      }
    }
    
  4. 其他示例代码

    import 'package:flutter/material.dart';
    import 'package:fetchly/fetchly.dart';
    
    void main() {
      Fetch fetch = Fetch(fetchlyy.init(
        baseUrl: 'https://dummyjson.com/',
        onRequest: (path, status, data) {
          // 监听请求
        },
        onError: (e, s) {
          // 监听错误
        },
        printType: PrintType.print,
        config: FetchConfig(printLimit: 3000, showHeader: true),
      ));
    
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Fetchly Demo',
          theme: ThemeData(
            colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
            useMaterial3: true,
          ),
          home: const TodoView(),
        );
      }
    }
    

更多命令

Fetchly 提供了一组命令来有效地管理项目文件和目录。这些命令帮助您创建、删除和清理应用程序设置中的文件和目录。

  • 生成新文件:例如配置文件或 API 端点。
    dart run fetchly:create <filename>
    
  • 删除文件:帮助您保持项目整洁,删除不必要的文件。
    dart run fetchly:remove <filename>
    
  • 清理 API 目录:移除旧的或未使用的 API 文件,重置项目的 API 结构。
    dart run fetchly:clean
    
  • 生成 fromJsonList 方法:在模型中生成 fromJsonList 方法。
    dart run fetchly:model <model-name>
    

更多关于Flutter数据获取插件fetchly的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter数据获取插件fetchly的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter中使用fetchly插件进行数据获取的示例代码。fetchly是一个用于简化HTTP请求的Flutter插件。假设我们有一个简单的RESTful API端点,我们将展示如何使用fetchly来获取数据。

首先,确保你已经在pubspec.yaml文件中添加了fetchly依赖项:

dependencies:
  flutter:
    sdk: flutter
  fetchly: ^最新版本号  # 请替换为实际的最新版本号

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

接下来,我们编写一个示例Flutter应用,展示如何使用fetchly从API获取数据。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Fetchly Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  FetchlyClient _client;
  String _responseData = '';
  bool _isLoading = false;

  @override
  void initState() {
    super.initState();
    _client = FetchlyClient(
      baseUrl: 'https://api.example.com', // 替换为你的API基础URL
      headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer YOUR_API_TOKEN', // 如果有需要的token
      },
    );
    fetchData();
  }

  void fetchData() async {
    setState(() {
      _isLoading = true;
    });

    try {
      var response = await _client.get('/endpoint'); // 替换为你的API端点
      if (response.isSuccessful) {
        setState(() {
          _responseData = response.body; // 这里假设返回的是JSON字符串,你可以解析为Dart对象
          _isLoading = false;
        });
      } else {
        setState(() {
          _responseData = 'Error: ${response.statusCode}';
          _isLoading = false;
        });
      }
    } catch (e) {
      setState(() {
        _responseData = 'Error: $e';
        _isLoading = false;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Fetchly Example'),
      ),
      body: Center(
        child: _isLoading
            ? CircularProgressIndicator()
            : Text(
                _responseData,
                style: TextStyle(fontSize: 18),
              ),
      ),
    );
  }
}

在这个示例中,我们做了以下事情:

  1. 设置FetchlyClient:在initState方法中,我们创建了一个FetchlyClient实例,并设置了基础URL和必要的HTTP头。

  2. 获取数据fetchData方法使用_client.get方法从指定的API端点获取数据。如果请求成功,我们将响应体存储在_responseData中;如果失败,则存储错误信息。

  3. UI显示:在build方法中,我们根据加载状态显示不同的UI组件。如果正在加载数据,则显示一个CircularProgressIndicator;否则,显示获取到的数据或错误信息。

请确保替换示例中的URL和端点为你实际的API信息,并根据需要调整HTTP头。如果你需要发送POST请求或其他类型的请求,可以使用_client.post_client.put_client.delete等方法。

回到顶部