Flutter初体验-01

前言

写完毕业论文闲着没事,学习了下flutter,花了些时间搭了个app出来。

我以前接触过原生安卓开发,在学习了flutter之后,我深感跨平台是客户端开发的趋势。想要接触客户端开发的朋友,不管是个人开发还是团队开发,都可以考虑一些flutter、react native这类跨平台客户端开发框架,毕竟只用编写一套代码就能得到多平台的应用真是太爽了。

下面讲一下我的flutter初体验。

flutter和dart

1. flutter概况

首先介绍下flutter概况

  • flutter是谷歌2015年开源的跨平台ui构建框架,其目标是使用一套代码库在不同架构、操作系统上构建相同的应用
  • flutter应用的用户界面和操作逻辑均由dart语言编写
  • flutter目前支持的平台有:
    • Android(arm,arm64,x86,x64)
    • iOS(arm64)
    • macOS(arm64,x64)
    • Linux(arm64,x64)
    • Windows(x64)
    • Web

2. dart语言

下面简单介绍下dart

dart语言由谷歌于2011年发布,其语法和java、javaScript相似,既可以解释运行又可以编译运行。

dart在进行客户端开发时具有众多优点:

  • 开发效率高的同时拥有高性能

    • dart在开发时采用JIT(即时编译)模式,避免每次改动重新编译全部代码
    • dart在发布时采用AOT(运行前编译)模式,在发布时可以将代码编译为高效的机器码,在客户端运行时提供良好的体验
  • 单线程模型

    • dart采用单线程模型,一段dart代码在执行过程中不会被其他代码打断,这保证了dart的线程安全
    • dart的所有代码均运行于Isolate中,每个Isolate是一个独立的运行区域,其中包含一个单线程的事件循环模型,不同Isolate之间不共享内存。
    • dart通过Isolate和循环模型保证线程安全并拥有处理异步任务的能力
    • dart实现了多种异步编程的方式:
      • async+await+Future
      • async*+yield+Stream
      • 直接操作Isolate
    • 想要详细了解,可以查看一些优秀的博客
  • 类型安全和空安全

    • dart是类型安全的语言
    • 在2.12版本后,dart支持了空安全特性,可以在编写时就避免一些问题
  • 各种feature

    • 参数默认值
    • “…”/"??"等操作符
    • with关键字

上面的介绍可能不够准确也不够完善,但是可以看出,dart是一种非常优秀的适合应用于客户端开发的语言。

app简介

我用flutter搭建的第一个app叫做Device Detector,可以实现网络设备扫描功能。目前安卓版正在申请上架中,下面进行简单介绍。

  • Device Detector是一个网络设备扫描器,具体功能如下:
    • 根据本机ip地址或输入的ip范围扫描网络设备
    • 展示可访问的ip地址、延迟时间、设备mac地址和厂商信息
  • 目前还有一些功能待完善,比如:
    • 实时显示扫描结果
    • 程序参数设置,包括:
      • 超时时间
      • 后台扫描任务数
      • 是否显示厂商名
  • 目前支持的平台有:
    • android
    • windows
    • linux
  • app的项目地址:Device Detector
  • app的使用截图:在这里插入图片描述

在这里插入图片描述

app工作流程和结构

Device Detector的工作流程如下:

获取本地ip地址/获取输入的ip范围  --> 扫描对应的ip范围
                                          |
                                          v
根据ip地址查询设备mac地址 <--  得到可达的ip列表和延迟时间
              |
              v
    根据mac地址查询设备厂商信息 --> 展示扫描结果 

根据上述工作流程,可以得出Device Detector需要实现以下基本功能:

  • 用户界面
  • 设备扫描功能
  • 设备mac查询功能
  • 设备厂商查询功能

根据不同的基本功能,可以将app拆分为多个独立的结构:

  • 首先,可以将app简要地分为ui端和逻辑端,ui端负责响应操作、显示结果,逻辑端负责逻辑处理、数据准备
  • 将逻辑端细分,可以分为:设备扫描模块、mac查询模块和厂商查询模块,不同的模块相互独立,以流水线的方式实现设备扫描

在app的ui端和逻辑端编写中,存在一些要点,将在下一篇中进行介绍。

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值