Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台



flutter是基于dart语言开发的,我们将首先通过几章节介绍下dart语言,再详细的学习flutter

1.dart里面是有类型的,并且具有类型校验校验 ,如果不申明具体类名,而是用var,dart就会自动推断变量类型

2.dart变量名称是区分大小的,name和Name是两个不同的变量

3.dart数据类型(可以通过is关键字判断类型):

  • 整形 int 浮点型:double double可以被赋值整形或者浮点型,但是int必须是整型。
  • 字符串 String
  • 布尔 bool
  • Lsit (数组)
  • Map (字典),类似于js中的对象
 //用var来定义变量,能定义任何变量,但是会自动推断变量类型,一旦赋值给某个具体的变量类型后,变量类型不会发生变化了
// void表示没有返回值,所有的dart代码需要放在main方法里面
//下面定义了一个数组,数组的增加是通过add()
void main(){
var arr=new List();
arr.add('张四');
arr.add('张五');
arr.add('张六');
print(arr);
}

不同类型的变量,可以通过一些方法进行转换类型,如下:

/**
* 1,number和String类型之间的转换
* number=>String toString()
* String=>number parse()
* 2,isEmpty:可以判断字符串是否为空
*/
String str='123';
int myNum=int.parse(str);
// var myNum=double.parse(str);
//dart中,打印信息用print,这个是全局方法,类似于js中的console.log()
print(myNum is int);



**tips:如果预知代码可能会出现bug,可以将代码包在try-catch里面,如下:

  String price='';
try{
var myNum=double.parse(price);
print(myNum);
}catch(err){
print(0);
}

dart中主要有三种集合类型:

List(类似js中的数组):

  • List属性:

    • isEmpty:是否为空
    • isNotEmpty:是否不为空
    • reversed:数组翻转
  • List方法:
    • add:增加元素,增加一个
    • addAll:增加元素,增加多个,传入的是一个数组(主要的功能是拼接数组)
    • indexOf:查找某个元素的索引
    • remove:删除某个元素
    • removeAt:删除某个索引的元素
    • fillRange:修改
    • insert(index,value):指定位置插入数据
    • insertAll:插入多个数据

Set(去重,方法和List差不多,将Set转化成List,通过toList())

  var list=['苹果','香蕉','桃子','苹果','香蕉','桃子','苹果','香蕉','桃子'];
var set=new Set();
set.addAll(list);
var list1=set.toList();

Maps:其类似于json,但是键名需要用引号引起来

var person={
"name":"jack"
}
  • 常用属性:
  • keys:所有的键
  • values:所有的键值
  • isEmpty:
  • isNotEmpty:
  • 常用方法:
  • addAll:一次增加多个键值对
  • remove:

对于三个集合(List,Set,Map)有些公共的循环遍历方法:

  • for-in
  • forEach():类似于es6中的forEach
  • map:类似于es6中的map
  • where:类似于es6中的filter
  • any:类似于es6中的some
  • every:类似于es6中的every

函数:包括系统函数+自定义函数

  • 系统内置的函数:比如print
  • 一个方法中是可以嵌套其他方法的,而且可以嵌套很多层,这时候需要注意方法的作用域,(方法里面套方法,返回内部的方法,这就是闭包)
  • 给方法命名建议使用驼峰,首字母是小写,给类命名也是驼峰,但是首字母需要大写
  • 注意dart中的方法是没有关键字function,这个要注意

    *dart中的可选参数,需要将参数放在:[ ]
  • 箭头函数只能写一句话,和es6中的箭头函数有点区别,
  • 方法的形参尽量加上类型
  • 全局变量:会常驻内存,容易污染全局
  • 局部变量:不会常驻内存,会被垃圾机制回收,不会污染全局
  • 如果想让一个变量常驻内存,而且不污染全局,只能用闭包实现,闭包也是这个目的
class Person{
String name;
int age;
// 构造函数,名字和类名一样
Person(name,age){
this.age=age;
this.name=name;
}
//上面有个简写的方法:
//Person(this.name,this.age) getInfo(){
return '$name--$age';
}
} main(){
/**
* 类(三大特性:封装,继承,多态),
* 类需要放到main函数外面
*/
Person p=new Person('唐凯震',25);
print(p.getInfo());
}

扫码关注公众号,有更多精彩文章等你哦

flutter从入门到精通一的更多相关文章

  1. flutter从入门到精通五

    在flutter的世界里,一切都是Widget,图像,文本,布局模型等等,一切都是Widget flutter中,尽量将Widget放在MaterialApp.其封装了所需要的一些Widget,Mat ...

  2. flutter从入门到精通四

    widget Flutter 从 React 中吸取灵感(如果有react的编程经验,会很容易理解flutter),通过现代化框架创建出精美的组件. 它的核心思想是用 widget 来构建你的 UI ...

  3. flutter从入门到精通三

    flutter可以通过一套代码运行在多个平台上,包括移动,web,桌面,嵌入式,但是在 Web 平台的支持尚未达到 Beta 阶段,请不要用在生产环节,在阅读文档时候,推荐大家阅读https://fl ...

  4. flutter从入门到精通二

    静态方法和静态属性(static): 通过static修饰的方法和属性称为静态方法和静态属性,注意静态方法和静态属性只能通过类名访问,不能通过对象访问. 静态方法不能访问非静态的属性和非静态方法,反正 ...

  5. <程序员从入门到精通> -- How

    定位 自己才是职业生涯的管理者,想清楚自己的发展路径: 远期的理想是什么?近期的规划是什么?今日的任务和功课又是什么? 今日之任务或功课哪些有助于近期之规划的实现,而近期之规划是否有利于远期之理想? ...

  6. 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目 目录索引

    索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(1)搭建MVC环境 注册区域 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(2)创建 ...

  7. ASP.NET MVC4入门到精通系列目录汇总

    序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,We ...

  8. Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引

    因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...

  9. 1、ASP.NET MVC入门到精通——新语法

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...

随机推荐

  1. SSM项目启动报错WEB-INF\lib\javax.servlet-api-4.0.1.jar) - jar not loaded. See Servlet Spec 3.0, section 10

    错误信息: validateJarFile(D:\tomcat_ryxunit\webapps\ryx_unit\WEB-INF\lib\javax.servlet.jar) - jar not lo ...

  2. Flink实时处理并将结果写入ElasticSearch实战

    参考原博客: https://blog.csdn.net/weixin_44516305/article/details/90258883 1 需求分析 使用Flink对实时数据流进行实时处理,并将处 ...

  3. Win10下轻松安装centos7.0(推荐)

    Windows10下安装centos7.0虚拟机环境 Windows10自带了一个类似Vmware虚拟化产品Hyper-V管理器 如果没有找到这个的小伙伴可以从菜单中的windows管理工具找到如图: ...

  4. OpenLDAP配置坎坷路

    https://segmentfault.com/a/1190000014683418 轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDA ...

  5. NSGA,NSGA-II,Epsilon-MOEA,DE C语言Deb教授原版代码

    NSGA,NSGA-II,Epsilon-MOEA,Basic Differential Evolution (DE) C语言Deb教授原版代码地址 觉得有用的话,欢迎一起讨论相互学习~[Follow ...

  6. 123457123456#0#----com.DoraGame.AiMiYu20--前拼后广--caimi-doraX

    com.DoraGame.AiMiYu20--前拼后广--caimi-doraX

  7. 使用idea创建简单的webservice服务

     New project: 生成HelloWorld.wsdl: 配置好tomcat后还需要加入 Axis 的库: 启动后,访问http://localhost:8080/services: 点击He ...

  8. 在Spring+MyBatis组合中使用事务

     通过Spring和MyBatis的组合,给出一个较为详细的实例 代码清单:配置Spring+MyBatis测试环境 <?xml version='1.0' encoding='UTF-8' ? ...

  9. Flink 物理分区

    本文来自官网: https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/stream/operators/#physical-p ...

  10. 【grafana报错】Singlestat "Error: Multiple Series Error"

    这个错误是因为grafana中的单值面板在同一个时刻读到了多个值.需要检查面板的json源码,检查其expr字段中的promql表达式是否会在同一时刻返回多个值. https://github.com ...