线程和异步的UI

1 异步的使用

Dart 有一个单线程执行模型,支持Isolate(一种在另外一种线程运行dart的方法),一个事件循环和异步编程。

可以使用async / await 来做网络请求不会挂起UI

使用http 导入

import ‘dart:io’;

import ‘dart:convert’;

// 加载数据
dataHandle()async{String url = "https://www.apiopen.top/journalismApi";var responseBody;var http = new HttpClient();var request = await http.getUrl(Uri.parse(url));var response = await request.close();if (response.statusCode == 200){print("Success");responseBody = await response.transform(utf8.decoder).join();print(responseBody);}else{print("error happend");}
}

2 网络请求数据 加载到列表中去

import 'dart:io';import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';import 'dart:convert';
void main() => runApp(MyApp());class MyApp extends StatelessWidget {// This widget is the root of your application.@overrideWidget build(BuildContext context) {return MaterialApp(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<SampleAppPage>
{List widgets =[]; // 加载数据dataHandle()async{String url = "https://www.apiopen.top/journalismApi";var responseBody;var http = new HttpClient();var request = await http.getUrl(Uri.parse(url));var response = await request.close();if (response.statusCode == 200){print("Success");responseBody = await response.transform(utf8.decoder).join();responseBody = json.decode(responseBody);// 通过调用setState 方式来更新UIsetState(() {widgets = responseBody["data"]["tech"];print(widgets.length);});   }else{print("error happend");}}// 初始化状态的时候加载数据@overridevoid initState() {super.initState();dataHandle();}Widget getRow (int idx){return Padding(padding: EdgeInsets.all(10),child: Text("${widgets[idx]["title"]}",style: new TextStyle(fontSize: 22,color: Colors.green),),);}@override Widget build(BuildContext context){return Scaffold(appBar: AppBar(title: new Text("Hello World")),body: ListView.builder(itemCount: widgets.length,itemBuilder: (BuildContext context,int idx){return getRow(idx);},),);}
}

8-flutter 异步和线程相关推荐

  1. Springboot异步任务线程池

    文章目录 1. 启动类添加@EnableAsync注解 2. 异步方法添加@Async注解 3. 自定义线程池以及线程池异常策略 1. 启动类添加@EnableAsync注解 package com. ...

  2. python线程池原理_Django异步任务线程池实现原理

    这篇文章主要介绍了Django异步任务线程池实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 当数据库数据量很大时(百万级),许多批量数据修改 ...

  3. 异步编程-线程实现异步编程

    异步编程-线程实现异步编程 使用线程实现异步 第一种方式 第二种方式 问题 在日常开发中我们经常会遇到这样的情况,即需要异步地处理一些事情,而不需要知道异步任务的结果.比如在调用线程里面异步打日志,为 ...

  4. android并发命令,Android开发实践:基于命令模式的异步任务线程

    关于Android的异步操作,我在文章<Android开发实践:线程与异步任务>中介绍了两种方法,一种是采用线程,另一种是采用AsyncTask,今天再深入探讨下另一种模型:命令式的异步任 ...

  5. 12、Nepxion Discovery 之 Discovery Agent 解决异步场景线程 ThreadLocal 上下文丢失问题

    在进行微服务调用的时候,不管是服务之间(A 服务调用 B 服务)还是服务内部调用(服务 A 某个方法进行里有异步)都存在异步调用.但是 Nepxion Discovery 在进行参数传递的时候很多情况 ...

  6. pthread异步_探索 Flutter 异步消息的实现

    本文作者:赵旭阳 字节跳动资深工程师 一.简介 我们在进行 Android 开发的时候,会通过创建一个 Handler 并调用其 sendMessage  或 Post 方法来进行异步消息调用,其背后 ...

  7. android 异步编程,flutter异步编程-事件循环、Isolate、Stream(流)

    事件循环.Isolate 开始前我们需要明白 Dart 是单线程的并且 Flutter 依赖于 Dart 如果你知道js 中的event loop 将很好理解dart的整个异步过程 先看一段代码 im ...

  8. 【Flutter 异步编程 - 捌】 | 计算耗时? Isolate 来帮忙

    一.问题引入 - 计算密集型任务 假如现在有个需求,我想要计算 1 亿 个 1~10000 间随机数的平均值,在界面上显示结果,该怎么办? 可能有小伙伴踊跃发言:这还不简单,生成 1 亿 个随机数,算 ...

  9. 探索 Flutter 异步消息的实现

    本文作者:赵旭阳 一.简介 我们在进行 Android 开发的时候,会通过创建一个 Handler 并调用其 sendMessage  或 Post 方法来进行异步消息调用,其背后涉及到了三个面试经常 ...

最新文章

  1. 宏基因组分析技术研讨会-2019年最后一期
  2. 重要通知 | WanaCrypt0r 2.0及Onion等勒索软件安全建议
  3. Kali Linux又增加一个顶级域名kali.download
  4. python gui插件_Python进阶量化交易专栏场外篇17- GUI控件在回测工具上的添加
  5. Codeforces - 914F bitset 维护字符串匹配个数
  6. PHP中foreach遍历循环的使用(两种用法)
  7. Linux系统初学者指南,观点|Linux 系统调用的初学者指南
  8. 制作 mysql的rpm文件_自制mysql.rpm安装包
  9. ajax.request提交,ajax request 请求
  10. 将markdown文本转换为微信文章格式的解决方案
  11. 【Gerrit】Add a Member
  12. linux下安装软件后的环境变量设置
  13. c语言儿童教学_五岁儿童的自然语言处理
  14. HTML5全局属性汇总
  15. fisheye calib视野调整
  16. 陈文灯对话高分学子 定位07年考研数学复习导向
  17. 个人最喜欢的几款火狐扩展
  18. (附源码)springboot猪场管理系统 毕业设计 160901
  19. 计算机视觉注意力网络(一)——简介
  20. ar vr mr 计算机技术,VR技术是什么?AR、MR又是什么?

热门文章

  1. EF 调试跟踪生成的SQL语句
  2. iOS开发技巧(系列十八:扩展UIColor,支持十六进制颜色设置)
  3. 让你的javascript函数拥有记忆功能,降低全局变量的使用
  4. cocos2d 0.99.5版本屏幕默认是横屏,怎么修改为竖屏呢?
  5. matplotlib绘制三维轨迹图
  6. 【C++】【九】栈的应用
  7. ARKit 与 ARCore比对(三)
  8. Solr占用CPU持续过高原因查询
  9. Javascript到PHP加密通讯的简单实现
  10. Shiro源码学习之二