Flutter客户端通信插件gazelle_client的使用

Flutter客户端通信插件gazelle_client的使用

Gazelle Client 是一个灵活强大的 Dart 客户端库,用于与 Gazelle 后端 API 进行交互。

特性

  • 为 Gazelle 后端应用提供易于使用的 API 客户端。
  • 支持所有主要的 HTTP 方法(GET、POST、PUT、PATCH、DELETE)。
  • 带有自定义异常的内置错误处理。
  • 灵活的 API 响应序列化和反序列化。
  • GET 请求支持查询参数。
  • 用于构建 API 路径的流畅接口。

开始使用

首先,在你的 pubspec.yaml 文件中添加 gazelle_client

dependencies:
  gazelle_client: ^1.0.0

然后运行 dart pub get

使用示例

以下是一个简单的 Gazelle Client 使用示例:

import 'package:gazelle_client/gazelle_client.dart';

// 定义一个模型类,例如 User
class User {
  final String name;
  final String email;

  User({required this.name, required this.email});
}

// 实现自定义模型提供器
class YourModelProvider implements GazelleModelProvider {
  [@override](/user/override)
  T fromJson<T>(Map<String, dynamic> json) {
    if (T == User) {
      return User.fromJson(json) as T;
    }
    throw UnsupportedError('Unsupported model type');
  }

  [@override](/user/override)
  Map<String, dynamic> toJson<T>(T model) {
    if (model is User) {
      return (model as User).toJson();
    }
    throw UnsupportedError('Unsupported model type');
  }
}

void main() async {
  // 初始化 GazelleClient
  final client = GazelleClient.init(
    baseUrl: 'https://api.example.com',
    modelProvider: YourModelProvider(),
  );

  try {
    // 发送 GET 请求
    final user = await client.api('users').get<User>(queryParams: {'id': 1});

    print('用户信息: $user');

    // 发送 POST 请求
    final newUser = User(name: 'John Doe', email: 'john@example.com');
    final createdUser = await client.api('users').post<User>(body: newUser);

    print('创建的用户: $createdUser');
  } catch (e) {
    print('请求失败: $e');
  } finally {
    // 关闭客户端
    client.api.close();
  }
}

更多关于Flutter客户端通信插件gazelle_client的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter客户端通信插件gazelle_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


gazelle_client 是一个用于 Flutter 应用的客户端通信插件,通常用于与后端服务进行通信,支持 RESTful API、WebSocket 等协议。以下是如何在 Flutter 项目中使用 gazelle_client 的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  gazelle_client: ^0.1.0  # 请确保使用最新版本

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

2. 导入包

在需要使用 gazelle_client 的 Dart 文件中导入包:

import 'package:gazelle_client/gazelle_client.dart';

3. 创建 GazelleClient 实例

你可以通过 GazelleClient 类来创建一个客户端实例,并配置基础 URL、超时等参数:

final client = GazelleClient(
  baseUrl: 'https://api.example.com',  // 你的 API 基础 URL
  timeout: Duration(seconds: 10),      // 请求超时时间
);

4. 发送 HTTP 请求

GazelleClient 提供了多种方法来发送 HTTP 请求,例如 getpostputdelete 等。

发送 GET 请求

Future<void> fetchData() async {
  try {
    final response = await client.get('/path/to/resource');
    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');
  } catch (e) {
    print('Error: $e');
  }
}

发送 POST 请求

Future<void> postData() async {
  try {
    final response = await client.post(
      '/path/to/resource',
      body: {'key': 'value'},  // 请求体
      headers: {'Content-Type': 'application/json'},  // 请求头
    );
    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');
  } catch (e) {
    print('Error: $e');
  }
}

5. WebSocket 支持

如果你的后端服务支持 WebSocket,你也可以使用 GazelleClient 来进行 WebSocket 通信。

Future<void> connectWebSocket() async {
  final webSocket = await client.connectWebSocket('/ws');
  
  webSocket.listen(
    (message) {
      print('Received: $message');
    },
    onDone: () {
      print('WebSocket closed');
    },
    onError: (error) {
      print('WebSocket error: $error');
    },
  );

  webSocket.add('Hello, WebSocket!');
}

6. 处理错误

在请求过程中可能会遇到各种错误,例如网络错误、服务器错误等。你可以通过 try-catch 块来捕获并处理这些错误。

Future<void> fetchData() async {
  try {
    final response = await client.get('/path/to/resource');
    if (response.statusCode == 200) {
      print('Data: ${response.body}');
    } else {
      print('Failed to load data: ${response.statusCode}');
    }
  } catch (e) {
    print('Error: $e');
  }
}

7. 关闭客户端

在应用关闭或不再需要客户端时,可以关闭 GazelleClient 以释放资源。

void dispose() {
  client.dispose();
}

8. 示例项目

以下是一个完整的示例,展示了如何使用 gazelle_client 发送 GET 请求并处理响应:

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

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

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

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

class _HomePageState extends State<HomePage> {
  final client = GazelleClient(baseUrl: 'https://jsonplaceholder.typicode.com');
  String data = 'Loading...';

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

  Future<void> fetchData() async {
    try {
      final response = await client.get('/posts/1');
      if (response.statusCode == 200) {
        setState(() {
          data = response.body;
        });
      } else {
        setState(() {
          data = 'Failed to load data';
        });
      }
    } catch (e) {
      setState(() {
        data = 'Error: $e';
      });
    }
  }

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('GazelleClient Example'),
      ),
      body: Center(
        child: Text(data),
      ),
    );
  }
}
回到顶部