类似 type ‘_InternalLinkedHashMap<dynamic, dynamic>’ is not a subtype of type ‘Map<String, dynamic>’ 这种常见异常是因为dynamic这个类型要明确一下,上述例子中此处的修改已经做了注释了,传餐时候使用Map<String,String>这种明确泛型类型的就可以。
dio封装dart文件,包含get,post请求和自定义动态headersimport 'package:dio/dio.dart';import 'dart:convert';import 'package:micro_course/http/ResultCode.dart';import 'package:micro_course/http/GlobalConfig.dart';cl...
作为系列文章的第二篇,继《
Flutter完整开发实战详解(一、Dart语言和
Flutter基础)》之后,本篇将为你着重展示:如何搭建一个通用的
Flutter App 常用功能脚手架,快速开发一个完整的
Flutter 应用。
友情提示:本文所有代码均在 GSYGithubApp
Flutter ,文中示例代码均可在其中找到,看完本篇相信你应该可以轻松完成如下效果。相关基础还请看篇章一。
class MyMy extends StatefulWidget {
List<Widget> gedans = new List();
void getHttp() async {
try {
Response response;
response =
文章目录使用Dio的配置默认配置通过options配置GET 请求POST请求多个并发请求:下载文件以流的方式接收响应数据:发送表单请求 FormData:通过FormData上传多个文件:监听发送(上传)数据进度:以流的形式提交二进制数据:
官方文档:
https://github.com/flutterchina/dio/blob/master/README-ZH.md
由于flutter目...
Dio dio = new Dio();
Map<String, dynamic> headers = new Map();
headers['Cookie'] = cookie;
Options options = new Options(
headers:headers
Future response;
respo...
Flutter 的网络请求可以使用 http 包进行封装,也可以使用第三方库如 dio、retrofit 等进行封装。以下是使用 dio 进行网络请求封装的示例:
1. 引入 dio 包
在 pubspec.yaml 文件中引入 dio 包:
```dart
dependencies:
dio: ^4.0.0
然后运行 `flutter pub get` 安装依赖。
2. 创建网络请求工具类
```dart
import 'package:dio/dio.dart';
class HttpUtil {
static const String baseUrl = "https://example.com/api/";
static Dio _dio;
static Dio get dio {
if (_dio == null) {
_dio = Dio(BaseOptions(
baseUrl: baseUrl,
connectTimeout: 5000,
receiveTimeout: 3000,
return _dio;
static Future<Response> get(String path, {Map<String, dynamic> params}) async {
try {
Response response = await dio.get(path, queryParameters: params);
return response;
} on DioError catch (e) {
print(e.message);
return null;
static Future<Response> post(String path, {Map<String, dynamic> params}) async {
try {
Response response = await dio.post(path, data: params);
return response;
} on DioError catch (e) {
print(e.message);
return null;
3. 使用网络请求工具类
```dart
import 'package:flutter/material.dart';
import 'package:your_app/http_util.dart';
class MyPage extends StatefulWidget {
@override
_MyPageState createState() => _MyPageState();
class _MyPageState extends State<MyPage> {
String _response = "";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("My Page"),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
_fetchData();
child: Text("Fetch Data"),
SizedBox(height: 20),
Text(_response),
void _fetchData() async {
Response response = await HttpUtil.get("users/1");
if (response != null) {
setState(() {
_response = response.data.toString();
这个示例中,我们在 `HttpUtil` 类中封装了 `get` 和 `post` 请求,然后在 `MyPage` 页面中使用 `HttpUtil` 进行网络请求,并将获取到的数据显示在页面上。当然,你可以根据自己的需求进行更改和扩展。