Flutter API调用插件sam_api_calls的使用

Flutter API调用插件sam_api_calls的使用

sam_api_calls

sam_api_calls 是一个用于在 Flutter 应用程序中调用 API 的新插件。

使用入门

这个项目是一个 Dart 包的起点,它包含可以轻松地跨多个 Flutter 或 Dart 项目的库模块。

安装

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

dependencies:
  sam_api_calls: ^1.0.0

然后运行 flutter pub get 命令来获取依赖包。

初始化

在你的 Dart 文件中导入 sam_api_calls 插件,并初始化它:

import 'package:sam_api_calls/sam_api_calls.dart';

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

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

调用API

使用 sam_api_calls 插件来调用 API。以下是一个完整的示例,展示如何调用一个简单的 HTTP GET 请求。

import 'package:flutter/material.dart';
import 'package:sam_api_calls/sam_api_calls.dart'; // 导入插件

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

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

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

class _MyHomePageState extends State<MyHomePage> {
  String _response = ''; // 用于存储 API 响应结果

  void _callApi() async {
    // 创建一个 API 调用实例
    ApiCall apiCall = ApiCall(
      url: "https://jsonplaceholder.typicode.com/posts", // 设置要调用的 API 地址
    );

    // 执行 API 调用
    try {
      var response = await apiCall.get(); // 使用 get 方法发起 GET 请求
      setState(() {
        _response = response; // 将响应结果设置到变量中
      });
    } catch (e) {
      setState(() {
        _response = e.toString(); // 如果发生错误,则将错误信息设置到变量中
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('API 调用示例'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _callApi, // 点击按钮时调用 API
              child: Text('调用 API'),
            ),
            SizedBox(height: 20),
            Text(_response), // 显示 API 响应结果
          ],
        ),
      ),
    );
  }
}

更多关于Flutter API调用插件sam_api_calls的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


sam_api_calls 是一个用于在 Flutter 中简化 API 调用的插件。它提供了简洁的 API 来执行 HTTP 请求,并处理常见的网络操作,如 GET、POST、PUT、DELETE 等。以下是如何使用 sam_api_calls 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 sam_api_calls 插件的依赖。

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

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 sam_api_calls 包。

import 'package:sam_api_calls/sam_api_calls.dart';

3. 初始化 API 调用

你可以使用 SamApiCalls 类来初始化 API 调用。

final api = SamApiCalls();

4. 执行 GET 请求

以下是一个执行 GET 请求的示例:

Future<void> fetchData() async {
  try {
    final response = await api.get('https://jsonplaceholder.typicode.com/posts');
    print('Response: ${response.body}');
  } catch (e) {
    print('Error: $e');
  }
}

5. 执行 POST 请求

以下是一个执行 POST 请求的示例:

Future<void> sendData() async {
  try {
    final response = await api.post(
      'https://jsonplaceholder.typicode.com/posts',
      body: {
        'title': 'foo',
        'body': 'bar',
        'userId': 1,
      },
    );
    print('Response: ${response.body}');
  } catch (e) {
    print('Error: $e');
  }
}

6. 处理响应

SamApiCalls 返回的响应是一个 Response 对象,你可以通过 response.body 获取响应的主体内容,或者通过 response.statusCode 获取状态码。

Future<void> fetchData() async {
  try {
    final response = await api.get('https://jsonplaceholder.typicode.com/posts');
    if (response.statusCode == 200) {
      print('Data fetched successfully: ${response.body}');
    } else {
      print('Failed to load data: ${response.statusCode}');
    }
  } catch (e) {
    print('Error: $e');
  }
}

7. 处理错误

SamApiCalls 会自动处理一些常见的网络错误,但你也可以在 try-catch 块中捕获并处理异常。

8. 设置请求头

你可以在请求中添加自定义的请求头:

final response = await api.get(
  'https://jsonplaceholder.typicode.com/posts',
  headers: {'Authorization': 'Bearer your_token'},
);

9. 设置超时

你可以为请求设置超时时间:

final response = await api.get(
  'https://jsonplaceholder.typicode.com/posts',
  timeout: Duration(seconds: 10),
);

10. 其他 HTTP 方法

SamApiCalls 还支持 PUT、DELETE 等其他 HTTP 方法,使用方法与 GET 和 POST 类似。

final response = await api.put(
  'https://jsonplaceholder.typicode.com/posts/1',
  body: {
    'title': 'foo',
    'body': 'bar',
    'userId': 1,
  },
);

final response = await api.delete(
  'https://jsonplaceholder.typicode.com/posts/1',
);

11. 使用 Base URL

如果你有多个 API 调用共享同一个基础 URL,你可以设置一个基础 URL:

final api = SamApiCalls(baseUrl: 'https://jsonplaceholder.typicode.com');

然后你可以在调用 API 时省略基础 URL:

final response = await api.get('/posts');

12. 处理 JSON 数据

你可以使用 dart:convert 包来解析和编码 JSON 数据。

import 'dart:convert';

Future<void> fetchData() async {
  try {
    final response = await api.get('https://jsonplaceholder.typicode.com/posts');
    if (response.statusCode == 200) {
      final List<dynamic> data = json.decode(response.body);
      print('Fetched data: $data');
    } else {
      print('Failed to load data: ${response.statusCode}');
    }
  } catch (e) {
    print('Error: $e');
  }
}
回到顶部