Flutter网络请求插件networking的使用

Flutter网络请求插件networking的使用

networking 是一个为Dart编写的通用HTTP客户端,它支持类型化且无错误的请求。本文将详细介绍如何使用该库来发起网络请求。

如何使用

使用 networking 客户端来消费GitHub Raw API非常简单:

import 'dart:async';
import 'dart:io';

import 'package:networking/networking.dart';

void main() async {
  // 创建一个GitHub仓库对象
  final repository = NetworkingGitHubRepository(
    user: 'dart-pacotes',
    repoId: 'networking',
    branch: 'master',
  );

  // 创建与GitHub Raw API交互的网络客户端
  final networkingClient = RawGitHubNetworkingClient(
    repository: repository,
  );

  // 定义要获取的文件路径
  final endpoint = 'README.md';

  // 发起GET请求并获取结果
  final getEndpointResult = await networkingClient.get(endpoint: endpoint);

  // 打印结果
  print(getEndpointResult);
}

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

1 回复

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


Flutter 中常用的网络请求插件包括 httpdio。下面我将分别介绍这两个插件的使用方法。


1. 使用 http 插件进行网络请求

http 是 Flutter 官方推荐的网络请求插件,简单易用。

安装

pubspec.yaml 中添加依赖:

dependencies:
  http: ^0.15.0

示例代码

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

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

class _HttpExampleState extends State<HttpExample> {
  String _responseData = 'Loading...';

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('HTTP Example'),
      ),
      body: Center(
        child: Text(_responseData),
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: HttpExample(),
  ));
}

2. 使用 dio 插件进行网络请求

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

安装

pubspec.yaml 中添加依赖:

dependencies:
  dio: ^5.0.0

示例代码

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

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

class _DioExampleState extends State<DioExample> {
  String _responseData = 'Loading...';

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Dio Example'),
      ),
      body: Center(
        child: Text(_responseData),
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: DioExample(),
  ));
}
回到顶部