热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flutter配置网络

见图:1,添加的依赖关系,在pubspec.yaml文件里2,打开文件pubspec.yaml在环境下的第一个依赖里里里写

见图:

1,添加的依赖关系,在pubspec.yaml文件里

2,打开文件pubspec.yaml

在环境下的第一个依赖里里里写http:0.12.0,然后点击右上角的包得到,这样就会去下载http包

大约2秒就好了,这样的话我们的网络HTTP包就导入进来了,这样就可以访问网络了。

新建一个networkbackground.dart文件

导入以下代码

import 'dart:convert';import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:async';
import 'dart:isolate';void main() {runApp(SampleApp());
}class SampleApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Sample App',theme: ThemeData(primarySwatch: Colors.blue,),home: SampleAppPage(),);}
}class SampleAppPage extends StatefulWidget {SampleAppPage({Key key}) : super(key: key);@override_SampleAppPageState createState() => _SampleAppPageState();
}class _SampleAppPageState extends State {List widgets = [];@overridevoid initState() {super.initState();loadData();}showLoadingDialog() {if (widgets.length == 0) {return true;}return false;}getBody() {if (showLoadingDialog()) {return getProgressDialog();} else {return getListView();}}getProgressDialog() {return Center(child: CircularProgressIndicator());}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Sample App"),),body: getBody());}ListView getListView() => ListView.builder(itemCount: widgets.length,itemBuilder: (BuildContext context, int position) {return getRow(position);});Widget getRow(int i) {return Padding(padding: EdgeInsets.all(10.0), child: Text("Row ${widgets[i]["title"]}"));}loadData() async {ReceivePort receivePort = ReceivePort();await Isolate.spawn(dataLoader, receivePort.sendPort);// The 'echo' isolate sends its SendPort as the first messageSendPort sendPort = await receivePort.first;List msg = await sendReceive(sendPort, "https://jsonplaceholder.typicode.com/posts");setState(() {widgets = msg;});}// the entry point for the isolatestatic dataLoader(SendPort sendPort) async {// Open the ReceivePort for incoming messages.ReceivePort port = ReceivePort();// Notify any other isolates what port this isolate listens to.sendPort.send(port.sendPort);await for (var msg in port) {String data = msg[0];SendPort replyTo = msg[1];String dataURL = data;http.Response response = await http.get(dataURL);// Lots of JSON to parsereplyTo.send(json.decode(response.body));}}Future sendReceive(SendPort port, msg) {ReceivePort response = ReceivePort();port.send([msg, response.sendPort]);return response.first;}
}

3,点击运行,网络获取的数据就完成了


如果您没有导入http库的话,那么将'package:http / http.dart'作为http;会报错,找不到网络库。


如果你的http包引入的位置有错误的话,也会报这个错:这里不允许映射值。你早些时候错过了结肠吗?

集成HTTP库

https://pub.dartlang.org/packages/http
添加依赖
dependencies:http: ^0.12.0
安装
flutter packages get
导入
import 'package:http/http.dart' as http;

常用方法

get(dynamic url, { Map headers }) → Future

  • (必须)网址:请求地址
  • (可选)标头:请求头

post(dynamic url, { Map headers, dynamic body, Encoding encoding }) → Future

  • (必须)网址:请求地址
  • (可选)标头:请求头
  • (可选)体:参数
  • (编码)编码:编码例子

http.post('https://flutter-cn.firebaseio.com/products.json',body: json.encode(param),encoding: Utf8Codec()).then((http.Response response) {final Map responseData = json.decode(response.body);//处理响应数据}).catchError((error) {print('$error错误');});

返回值都用到Dart Futures,类似Javascript中的promise官方推荐使用async/await来调用网络请求

void addProduct(Product product) async {Map param = {'title': product.title,'description': product.description,'price': product.price};try {final http.Response response = await http.post('https://flutter-cn.firebaseio.com/products.json',body: json.encode(param),encoding: Utf8Codec());final Map responseData = json.decode(response.body);print('$responseData 数据');} catch (error) {print('$error错误');}}

用  try catch来捕获错误两种写法都可以,个人觉得第二种语法思路更明确。

 

附上一些常用库

name: stocksenvironment:# The pub client defaults to an <2.0.0 sdk constraint which we need to explicitly overwrite.sdk: ">&#61;2.0.0-dev.68.0 <3.0.0"dependencies:flutter:sdk: flutterflutter_localizations:sdk: flutterintl: 0.15.7intl_translation: 0.17.2http: 0.12.0isolate: 2.0.2analyzer: 0.33.6&#43;1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"async: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"charcode: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"collection: 1.14.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"crypto: 2.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"dart_style: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"front_end: 0.1.6&#43;9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"html: 0.13.3&#43;3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"kernel: 0.3.6&#43;9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"logging: 0.11.3&#43;2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"meta: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"package_config: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"path: 1.6.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"petitparser: 2.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"plugin: 0.2.0&#43;3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"pub_semver: 1.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"source_span: 1.4.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"utf: 0.9.0&#43;5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"watcher: 0.9.7&#43;10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"yaml: 2.1.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"dev_dependencies:flutter_test:sdk: flutterflutter_driver:sdk: flutterboolean_selector: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"json_rpc_2: 2.0.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"matcher: 0.12.3&#43;1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"quiver: 2.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"stack_trace: 1.9.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"stream_channel: 1.6.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"term_glyph: 1.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"test_api: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"vm_service_client: 0.2.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"web_socket_channel: 1.0.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"flutter:uses-material-design: true# PUBSPEC CHECKSUM: 1b58

 

参考链接&#xff1a;dart中的http包讲解&#xff0c;flartter官方网站&#xff0c;Dart语言官方网站

 


推荐阅读
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • 使用Flutternewintegration_test进行示例集成测试?回答首先在dev下的p ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 数组的排序:数组本身有Arrays类中的sort()方法,这里写几种常见的排序方法。(1)冒泡排序法publicstaticvoidmain(String[]args ... [详细]
  • 面向对象之3:封装的总结及实现方法
    本文总结了面向对象中封装的概念和好处,以及在Java中如何实现封装。封装是将过程和数据用一个外壳隐藏起来,只能通过提供的接口进行访问。适当的封装可以提高程序的理解性和维护性,增强程序的安全性。在Java中,封装可以通过将属性私有化并使用权限修饰符来实现,同时可以通过方法来访问属性并加入限制条件。 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
author-avatar
美美琳子_899
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有