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. Comparison and difference for Default geodatabase,Current workspace,Scratch workspace,Home Folder

    Comparison and difference for Default geodatabase,Current workspace,Scratch workspace,Home Folder 商务 ...

  2. Navicat Premium 12 mysql show error: connection is being used

    错误原因:连接数满了. 解决方案:杀掉无用连接,释放资源.

  3. docker批量操作容器

    author:headsen chen date: 2019-08-07  15:26:46 列出所有的容器 ID docker ps -aq 停止所有的容器 docker stop $(docker ...

  4. flutter 数据存储 SP和sqlite

    添加插件: shared_preferences: ^0.4.2 path_provider: ^1.2.0 sqflite: ^0.12.0 import 'dart:async'; import ...

  5. 从0开始学爬虫4之requests基础知识

    从0开始学爬虫4之requests基础知识 安装requestspip install requests get请求:可以用浏览器直接访问请求可以携带参数,但是又长度限制请求参数直接放在URL后面 P ...

  6. linux中proz下载软件安装部署

    W系统里有迅雷这个下载工具,L系统里也一样有prozilla下面说一下CENTOS 5 系统里安装prozilla的过程1.首先在下面的链接下载最新稳定版本的prozilla 记得下tar包版本的[u ...

  7. Access与SQL中的IsNull(),IS NULL的区别

    Access也有IsNull函数,但意义和参数却和T-SQL中的不同. 在T-SQL(也就是SQL Server所支持的SQL语言)中,IsNull的作用是把空值替代成指定的值.然而在Access中, ...

  8. realsense SDK编译 release

    1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Release x64 ------1> Checking Build System1> CMake does ...

  9. Python 初级 5 判断再判断

    复习: 1 三种数据类型: 整数:int, (1, 2, 200) 浮点数: float(2.0, 9.5, 100.38) 字符串: str("小明", "abc&qu ...

  10. OHEM(online hard example mining)

    最早由RGB在论文<Training Region-based Object Detectors with Online Hard Example Mining>中提出,用于fast-rc ...