Flutter官网
Dart 是一种 易于学习、 易于扩展、并且可以部署到 任何地方 的 应用 编程 语言。
在跨平台开领域被 JS 统治的今天,Dart 语言的出现无疑是其最有力的竞争者。Dart语言有着不少Java、kotlin 和 JS 的影子,所以对于 Android 原生开发者、前端开发者而言是非常友好的。
Flutter 中文网也提供了包括IOS开发者,React Native 等开发者迁移到 Flutter 上的文档。所以请不要担心,Dart语言不会是你掌握 Flutter 的门槛,就算你不懂 Dart 也可以看着代码摸索。
下面简单讲述下 Dart 的基础语法。
'声明'
:以下Dart语法是本人实践总结的,如有不足之处,敬请谅解。
void main(){
//程序打印
print("Hello World");
}
void main (){
String str1 = 'Hello';//" "
String str2 = '''Hello
Dart''';//""" //多行显示
print(str2);
String str3 = 'Hello \n Dart';//" "
print(str3);
String str4 = r'Hello \n Dart';//r打印原始字符串
print(str4);
String str5 = "this is";
print(str5 + "Dart");
print(str5*5);
print(str3 == str4);
print(str5[1]);
//插值表达式 ¥{expression}
int a = 1;
int b = 2;
print("a + b = ${a + b}");
print(str5.length);
print(str5.isEmpty);
print(str5.contains("this"));
print(str5.substring(0,3));
print(str5.startsWith("a"));
print(str5.endsWith("is"));
var list = str5.split(" ");//字符串风格
print(list);
print(str5.replaceAll("this", "that"));
}
void main(){
bool isTure = true;
bool isFalse = false;
print(isTure);
print("hello".isEmpty);
}
void main(){
//dynamic 动态类型
var a;
a = 10;
a = "Dart";
dynamic b = 20;
b = "JavaScript";
var list = new List<dynamic>();
list.add(1);
list.add("hello");
list.add(true);
print(list);
}
void main(){
var list1 = [1,2,3,"Dart", true];
print(list1);
print(list1[2]);
list1[1] = "hello";
print(list1);
var list2 = const [1,2,3];//不可变list
print(list2);
var list3 = new List();//构造方式,暂时了解
var list = ["hello", "Dart"];
print(list.length);
list.add("New");
print(list);
list.insert(1, "OC");
print(list);
list.remove("OC");
print(list);
print(list.indexOf("Dart"));//元素坐在位置
list.sort();//根据ASC码排序
print(list);
print(list.sublist(1));//截取
list.forEach(print);//循环
// list.clear();
// print(list);
}
void main(){
var map1 = {"first":"Dart",1:true};
print(map1);
print(map1["first"]);
map1[1] = false;
print(map1);
var map2 = const {1:"Dart",2:"Java"};//不可变Map
print(map2);
var map3 = new Map();//构造,暂时了解
var map = {"first":"Dart","second":"java","third":"pythen"};
print(map.length);
print(map.keys);
print(map.values);
print(map.containsKey("first"));
print(map.containsValue("C"));
map.remove("third");
print(map);
map.forEach(f);//map循环
var list = ["1","2","3"];
print(list.asMap());//List转map
}
void f(key,value){
print("key = $key,value = $value");
}
void main(){
num a = 10;
a = 12.5;
int b = 20;
double c = 20.5;
print(a + b);
print(a - b);
print(a * b);
print(a / b);
print(a ~/ b);
print(a % b);
print(b.isEven);
print(b.isOdd);
double f = 10.5;
print(f.round());//四舍五入
print(f.floor());//不大于它的整数
print(f.ceil());//不小于它的整数
print(f.toInt());//浮点型转整型
print(b.toDouble());//整型转浮点型
}
void main(){
var a;
print(a);
a = 10;
print(a);
a = 'Hello world';
print(a);
//final 只能赋值一次
final c = 30;
//常量
const d = 20;
}
void main(){
int a = 10;
int b = 2;
print(a + b);
print(a - b);
print(a * b);
print(a / b);
print(a ~/ b);
print(a % b);
a++;
print(a);//11
++a;
print(a);//12
a--;
print(a);//11
--a;
print(a);//10
}
void main (){
int a = 10;
int b = 5;
b ??= 10;// ??= 相当于三目运算符 如果b没有值,择给b赋值10.如果b有值,则直接输出b的值。
print(b);
a += 2;
print(a);
a-= b;
print(a);
a *= b;
print(a);
a ~/= b;
print(a);
a %= b;
print(a);
}
void main (){
int gender = 0;
String str = gender == 0 ? "Male = $gender" : "Female = $gender";
print(str);
String a = "Dart";
String b = "Java";
String c = a ?? b;//??= 类三目运算符 如果a没有值,输出b.如果a有值,输出a。
print(c);
}
void main (){
void main (){
bool isTrue = true;
print((!isTrue));
bool isFalse = false;
print(isTrue && isFalse);
print(isTrue || isFalse);
String str = "";
print(!str.isEmpty);
}
void main(){
int a = 5;
int b = 3;
print(a == b);
print(a != b);
print(a > b);
print(a < b);
print(a >= b);
print(a <= b);
String strA = "123";
String strB = "321";
print(strA == strB);
}
void main(){
var list =[1,2,3];
for( var item in list){
if(item == 2){
// break;//停止当前循环
continue;//跳过当前循环
}
print(item);
}
print("-------");
var list2 =[4,5,6];
for( var item1 in list){
if(item1 == 2){
break;//停止当前循环,只会终止内层循环
// continue;//跳过当前循环
}
for( var item2 in list2){
if(item2 == 5){
break;//停止当前循环,只会终止内层循环
// continue;//跳过当前循环
}
print(item2);
}
}
}
void main(){
var list = [1,2,3,4,5];
for(var index = 0; index < list.length; index++ ){
print(list[index]);
}
print("-------");
for(var item in list){
print(item);
}
}
void main(){
int score = 100;
if(score >= 90){
if ( score == 100){
print("完美");
}else{
print("优秀");
}
}else if(score > 60){
print("良好");
}else if(score == 60){
print("及格");
}else{
print("不及格");
}
}
void main(){
String language = "Java";
switch (language){
case "Dart":
print("Dart is My favorite");
break;
case "Java":
print("Java is My favorite");
break;
case "Python":
print("Python is My favorite");
break;
default:
print("None");
}
switch(language){
Test:
case "Dart":
print("Dart is My favorite");
break;
case "Java":
print("Java is My favorite");
continue Test;//跳出去,执行Test方法。
// break;
case "Python":
print("Python is My favorite");
break;
default:
print("None");
}
}
void main(){
//1.while 循环
int count = 0;
while(count < 5){
print(count++);
}
print("-----$count-------");
//2.do while 循环
do{
print(count--);
}
while( count > 0 && count < 5);
}
void main(){
var func = ( str){
print("Hello----$str");
};
func(30);
//此匿名方法不建议使用
// ((){
// print("Test");
// }
// )();
//方法1:
var list2 = ["h","e","l","l","o"];
var result = listTimes(list2, (str){return str * 3;});
print(result);
//方法2:
var list3 = ["h","e","l","l","o"];
print(listTimes2(list3));
}
List listTimes(List list,String times(str)){
for (var index = 0; index < list.length; index++){
list[index] = times(list[index]);
}
return list;
}
List listTimes2(List list){
var func = (str){return str *3; };
for (var index = 0; index < list.length; index++){
list[index] = func(list[index]);
}
return list;
}
//闭包是一个方法(对象)
//闭包定义在其他方法内部
//闭包能够访问外部方法内的局部变量,并持有其状态。
void main(){
var func = a();
func();
func();
func();
func();
func();
var funcb = b();
funcb();
funcb();
funcb();
funcb();
funcb();
}
a(){
int count = 0;
printCount(){
print(count++);
}
return printCount;
}
//匿名方法
b(){
int count = 5;
return(){
print(count++);
};
}
void main(){
print(args);
print(getPerson("zhangsan",18));
printPerson("李四", 20);
}
//String getPerson (String name,int age){
//
// return "name = $name, age = $age";
//}
int gender = 2;
getPerson ( name, age) => gender == 1 ?"name = $name, age = $age":"Test";
printPerson(name, age){
print ("name = $name, age = $age");
}
void main(){
// 1. 用 "=" 表示默认值
printPerson("李四");
printPerson("李四",age: 20);
printPerson("李四",gender: "Male");
}
printPerson(String name,{int age = 30, String gender = "Female"}){
print("name = $name, age = $age,gender = $gender");
}
void main(){
Function func = printHello;
func();
var list = [1,2,3,4];
list.forEach(print);
var list2 = ["h","e","l","l","o"];
print(listTimes(list2, times));
}
void printHello (){
print("Hello");
}
List listTimes(List list,String times(str)){
for (var index = 0; index < list.length; index++){
list[index] = times(list[index]);
}
return list;
}
String times(str){
return str*6;
}
void main(){
// 1.{} 传值时带参数,带冒号,但是多个参数位置可更换
// 2.[] 传值时不带参数,不带冒号,多个参数位置不可更换
// 3.可选参数放在必传参数后面
printPerson("李四");
printPerson("李四",age: 20,gender: "Male");
printPerson("李四",gender: "Male",age: 20);
printPerson2("张三");
printPerson2("张三",20, "Male");
}
printPerson(String name,{int age, String gender}){
print("name = $name, age = $age,gender = $gender");
}
printPerson2( String name,[int age, String gender]){
print("name = $name, age = $age,gender = $gender");
}