【第三章 flutter学习之Dart基础(上)】

news2024/11/25 3:38:09

文章目录

    • 一、入口方法的定义方式
    • 二、Dart变量和常量
    • 三、Dart常用数据类型
    • 四、Dart运算符与类型转换及循环语句
    • 五、自定义方法
    • 六、Dart静态成员、操作符、类的继承
    • 七、接口
    • 八、接口分离写法
    • 九、一个类实现多个接口

一、入口方法的定义方式

main(){
	print('hello world')
}
//下边这种方法中void表示没有返回值
void main(){
	print('你好dart')
}

二、Dart变量和常量

var str = 'hello'   
Srting srt = 'hello'
int srt = 123
//两种命名变量的方式

const a = 123
final a = 123 
//他们两个是用来声明常量的
区别是
final 可以接受一个可变的数值 例如 New Date()const 就不可

三、Dart常用数据类型

1. 字符串类型
	var || String 声明   
	拼接字符串与js相比多了一种拼接方式
例如:
	String str = "hello"
	var str2 = "world"
	print("$str $str2"){
	
	}
	//就会打印str + str2 一样的 "hello world"
	
2. 数值类型
 int整数值 //只有整数
 double浮点值  double包含整数和小数
 
3. 运算符
+ - * / %

4.布尔值
true false 

4. 条件判断
 if语句 和js一样
 
5. 数组/集合类型
 第一种声明和js一样
  var list=['aaa','a',0,1]
  
 第二种声明可指定类型
 var list = <String>["这里边必须是指定类型数据"]
 
 数组添加的方式 js是通过push...
 它可以通过add添加
 var list = []
 list.add(1)
 
 第三种声明方式 固定长度
 var list = List.filled(2,"") 创建一个长度固定为2的数组集合 默认值""
  可指定类型 不可以增加 可修改数据 修改方式 => list[0]=1
  
6. maps类型 类型对象

第一种方式
var data={
	"name":"xxx",
	"age":20
}
 
第二种
var data = new Map()
data["name"] = "XXX"
data["age"] = 12


类型判断 is
var str = ""
str is String 返回布尔值

四、Dart运算符与类型转换及循环语句

1. 算数运算符
  +、 - 、* 、/ 、 ~/取整 、 %
  ~/取整  a~/b 意思就是a/b的值取整
2. 关系运算符
  == ~= > < >= <=
3. 逻辑运算符
  ! && ||
4. 赋值运算符
  =  ??=
  ??=  a??=12意思就是a的值空吗是的话就把12赋值给a
  += -= *= /= %= ~/=
  ++  --  (++,--在前先运算再赋值,在后先赋值再运算)
5. 条件表达式
   if else  switch case
   三目运算符(三元表达式)
类型转换
	1. 转化为String类型 toString()
	2. 转化为Number类型 double.parse() || int.parse()
try  ... catch  抛出异常
	try{
	XXXX	
	}catch(err){
	//如果XXXX部分代码报错则执行此作用域内代码
	}
isEmpty:判断字符串是否为空
isNotEmpty:判断是否不为空
str.isEmpty
for循环 和js一样
for(int i = 1; i<100; i++){
	parint(i)
}
do while
单个while和if类似,不过只要条件仍满足则扔执行
	do {
			先执行一次再判断
			while中的条件满足,满足则继续执行
			continue;//表示跳过本次循环
			break;//跳出循环
		}while(条件)
数组常用方法
length属性 长度
reversed属性 翻转并转换数组(3,2,1)这样的括号
toList方法 转换(3,2,1)为数组[3,2,1]
add()  添加单个数据
addAll() 添加多个数据,也可用来拼接
indexOf() 查找并返回索引否则返回-1
remove() 传递具体的值删除
removeAt() 传入索引删除
fillRange() 修改,接受三个参数,(起始位置,结束为止,修改的值)
insert()也是接收三个参数,起始,结束,值;用来插入值
insertAll() 插入多个值 两个参数(插入下标位置,插入的值(可以是数组))
join(',') 转换为字符串
split(',') 转化为数组

for in 循环对象
forEach循环
	可以没有箭头
XX.forEach((val){
		print("$value")  
})
map函数
where函数
any函数 只要又满足条件的就返回true
every 每一项都要满足否则就返回false


五、自定义方法

void 自定义名称(){
	print("自定义方法")
}

void main() {
	自定义名称()//调用
	
	int 方法2(){
	//也可以在这里定义方法 
	return 666
 	}
 	var a=方法2()
 	print(a)
}

自执行方法
((a){
	print(a)
})(参数);

class类
定义类
在这里插入图片描述
使用类
在这里插入图片描述
默认就执行构造函数
在这里插入图片描述
简写方式
在这里插入图片描述
类单独抽离成一个组件或方法

  1. 创建一个dart文件,定义好类,
  2. import “路径” 引入 即可使用

私有属性
必须是一个单独的文件
属性或方法前面加_下划线即可为私有属性或者私有方法
不过仍可以间接获取,通过调用共有方法仍可获取到

getter setter修饰符
在这里插入图片描述
在这里插入图片描述
初始化列表

在这里插入图片描述

六、Dart静态成员、操作符、类的继承

Dart静态成员
在这里插入图片描述

在这里插入图片描述
操作符

Dart中的对象操作符
?条件运算符
as 类型转换
is 类型判断
.. 级联操作

在这里插入图片描述
连缀操作
在这里插入图片描述

类的继承
在这里插入图片描述
如果继承类调用方法自己有的话则调用自己的,没有才会去父类找

在这里插入图片描述

在这里插入图片描述

多态
在这里插入图片描述

七、接口

/*
和Java一样,dart也有接口,但是和Java还是有区别的。

  首先,dart的接口没有interface关键字定义接口,而是普通类或抽象类都可以作为接口被实现。

  同样使用implements关键字进行实现。

  但是dart的接口有点奇怪,如果实现的类是普通类,会将普通类和抽象中的属性的方法全部需要覆写一遍。
  
  而因为抽象类可以定义抽象方法,普通类不可以,所以一般如果要实现像Java接口那样的方式,一般会使用抽象类。

  建议使用抽象类定义接口。

*/

/*
定义一个DB库 支持 mysql  mssql  mongodb

mysql  mssql  mongodb三个类里面都有同样的方法

*/


abstract class Db{   //当做接口   接口:就是约定 、规范
    late String uri;      //数据库的链接地址
    add(String data);
    save();
    delete();
}

class Mysql implements Db{
  
  @override
  String uri;

  Mysql(this.uri);

  @override
  add(data) {
    // TODO: implement add
    print('这是mysql的add方法'+data);
  }

  @override
  delete() {
    // TODO: implement delete
    return null;
  }

  @override
  save() {
    // TODO: implement save
    return null;
  }
  remove(){
      
  }

  
}

class MsSql implements Db{
  @override
  late String uri;
  @override
  add(String data) {
    print('这是mssql的add方法'+data);
  }

  @override
  delete() {
    // TODO: implement delete
    return null;
  }

  @override
  save() {
    // TODO: implement save
    return null;
  }


}

main() {

  Mysql mysql=new Mysql('xxxxxx');

  mysql.add('1243214');

  


  
}

八、接口分离写法

在这里插入图片描述
在这里插入图片描述

九、一个类实现多个接口

在这里插入图片描述
之后再入口调用类
在这里插入图片描述


未完待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/725078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker学习笔记24

Docker Swarm 搭建&#xff1a; 主机名系统版本IP地址功能swarm-1centos7.9192.168.17.10管理节点swarm-2centos7.9192.168.17.20工作节点swarm-3centos7.9192.168.17.30工作节点 CPU、Memory、Disk不做要求。 准备IP地址和主机名&#xff1a; hostnamectl set-hostname swa…

测试不容易,入坑请注意!

“零基础入门&#xff0c;保证就业&#xff0c;钱多&#xff0c;事少&#xff01;” 绝大部分培训机构的招生话术不外乎如此&#xff0c;骗了一波又一波钱多人傻的人入坑测试。而在报名前&#xff0c;会进行考试评估学员是否适合从业软件测试的机构很难见到。如果有&#xff0…

几何光学软件

光线追踪器 从手册中&#xff1a; https://arachnoid.com/OpticalRayTracer/ OpticalRayTracer 是一款免费 (GPL) 跨平台应用程序&#xff0c;用于分析透镜和反射镜系统。 它使用光学原理和虚拟光具座来预测多种普通和奇异镜头类型以及平面镜和曲面镜的行为。 OpticalRayTracer…

搭建ssl双向验证python

生成证书 客户端和服务端搭建 https simple-https-server.py # run as follows: python simple-https-server.py # then in your browser, visit: # https://localhost import ssl import http.serverserverAddress (0.0.0.0, 443) httpd http.server.HTTPServer(serverA…

【力扣】设计内存分配器(高效实现)

题目 给你一个整数 n &#xff0c;表示下标从 0 开始的内存数组的大小。所有内存单元开始都是空闲的。 请你设计一个具备以下功能的内存分配器&#xff1a; 分配 一块大小为 size 的连续空闲内存单元并赋 id mID 。 释放 给定 id mID 对应的所有内存单元。 注意&#xff1a;…

面试官当面夸奖完我后,反手把我挂了...只能说这套路太..

最近几个朋友找我聊天&#xff0c;给我讲述了面试过程中遇到的一些不太理解的事情。作为一个技术面试官&#xff0c;今天来分享 9 个面试相关的套路。 1.自我介绍 自我介绍是一个重要的开始&#xff0c;好的开始是成功的一半。不需要太多花里胡哨的东西&#xff0c;简单、清楚…

超详细:阿里云服务器地域和可用区选择方法

阿里云服务器地域和可用区怎么选择&#xff1f;地域是指云服务器所在物理数据中心的位置&#xff0c;地域选择就近选择&#xff0c;访客距离地域所在城市越近网络延迟越低&#xff0c;速度就越快&#xff1b;可用区是指同一个地域下&#xff0c;网络和电力相互独立的区域&#…

文件行读写

#include<stdio.h> #include<stdlib.h> #include<string.h> int main01() {FILE* fpfopen("D:/a.txt","r");//打开文件 if(fpNULL) printf("打开文件失败\n");char* p(char*)malloc(sizeof(char)*100);memset(p,0,100);fge…

架构课学习笔记:职业成长

架构师没有明确的定义&#xff0c;郭老师提出具备的能力&#xff1a;就是为一个复杂系统设计软件的能力&#xff0c;以及引导研发团队实施的能力。从5个 阶段来看对应的能力维度&#xff1a;结构化设计、解决横向问题、解决跨领域冲突、正确的技术决策和创造生存优势。 一结构…

树结构 根据关键字过滤

案例&#xff1a; 默认 过滤之后 直接看代码&#xff1a; <divclass"grid-content bg-purple"style"background-color: #fff"><p>单位列表</p><!-- defaultProps :这个里面的字段要与后端返回过来的字段一致 --><el-inputplac…

C++笔记之sizeof()判断对象所占内存空间的大小以及字符数组的长度

C笔记之sizeof()判断对象所占内存空间的大小以及字符数组的长度 code review! 文章目录 C笔记之sizeof()判断对象所占内存空间的大小以及字符数组的长度1.C笔记之sizeof()判断对象所占内存空间的大小2.C笔记之sizeof()判断数组的长度3.C笔记之strlen在字符数组中的使用 1.C笔…

《动手学深度学习》——多层感知机

参考资料&#xff1a; 《动手学深度学习》 4.1 多层感知机 4.1.1 隐藏层 隐藏层 激活函数能够模拟任何连续函数。 4.1.2 激活函数 4.1.2.1 ReLu函数 ReLU ⁡ ( x ) max ⁡ ( x , 0 ) \operatorname{ReLU}(x) \max(x, 0) ReLU(x)max(x,0) 当输入为负时&#xff0c;ReLU …

Python爬虫-求是网

前言 本文是该专栏的第2篇,后面会持续分享python爬虫案例干货,记得关注。 地址:aHR0cDovL3NlYXJjaC5xc3RoZW9yeS5jbi9xaXVzaGkvP2tleXdvcmQ9 需求:根据搜索关键词,爬取对应关键词下的全部文章信息 废话不多说,跟着笔者直接往下看详细内容。(附带完整代码) 正文 1. 请…

说说 OpenAI 最新发布的Function calling 是什么

这两天看的比较多的一个新闻就是 OpenAI 又更新了自己的 API。 除了各种大减价&#xff0c;增加 Token 数量之外&#xff0c;还新推出了一个叫做 Function calling 的能力。那么 Function calling 到底是什么东西&#xff0c;可能很多新闻类型的内容也没讲太明白&#xff0c;我…

基于SpringBoot+vue的教师人事档案管理系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

【力扣周赛】第 352 场周赛

文章目录 Q1&#xff1a;2760. 最长奇偶子数组解法1——纯纯暴力解法2——枚举左端点&#xff0c;尝试右端点继续优化 Q2&#xff1a;2761. 和等于目标值的质数对一个小优化 Q3&#xff1a;2762. 不间断子数组解法1——滑动窗口维护哈希表普通HashMap使用TreeMap补充&#xff1…

利用Python批量压缩图片大小(不改变图片尺寸,不改变图片格式)

我们经常需要在某些文件中如&#xff1a;Word,Excel&#xff0c;PPT等中&#xff0c;插入大量的图片&#xff0c;但是图片每一张的内存都不小&#xff0c;累计多了&#xff0c;就是导致文件的内存过大&#xff0c;导致客户打不开文件&#xff0c;那么我们可以将图片的内存压缩一…

指针的指针理解与用法

指针实际上就是一个变量&#xff0c;当他不是空指针的时候他的值就是某一个地址&#xff0c;同时他自己也是有地址的&#xff0c;因为它是一个变量。 指针的指针的值其实就是某一个指针的地址。 int main() {int a 5;int *p &a;int **pp &p;printf("%p\n&quo…

GitHub Pages + Hexo搭建个人博客网站

步骤 参考如下步骤&#xff1a;https://blog.csdn.net/yaorongke/article/details/119089190 出现的问题 1 Fluid主题 其更换Fluid主题时&#xff1a; 下载最新 release 版本 解压到 themes 目录&#xff0c;并将解压出的文件夹重命名为 fluid 按照上面执行后&#xff0c;后…

新增数据列--Pandas

1. 直接赋值 order pd.read_excel(C:\\Users\\changyanhua\\Desktop\\order.xlsx) print(order.head()) # 1.直接赋值新增列&#xff1a; order[平均价]order[销售额]/order[数量] print(order.head())2.apply()方法 2.1 函数功能 沿着DataFrame的某个轴应用一个函数。返回…