Flutter

一、介绍

  • Flutter是Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过Dart语言开发App,一套代码同时运行在iOS和Android平台。Flutter提供了非常丰富的组件、接口,开发者可以很快地为Flutter添加native扩展。同时Flutter还使用Native引擎渲染视图,为用户提供良好的体验。
  • 特点:
    跨平台自绘绘擎
    高性能

二、开发环境配置

hello world

  • 为android studio添加Flutter插件
  • 使用android studio开发第一个Flutter应用

dart开发环境配置

下载网址:https://gekorm.com/dart-windows/
https://dart.dev/get-dart/archive

三、dart

1.变量与常量

void main(){
  //var声明
  var username="quan";
  username="good";

  // dynamic a="good job";
  // Object b="good job";
  // print(a.length);
  // print(b.length);

  // final psw="good";
  // psw="job";
  //
  // const psw="good";
  // psw="job";
}

2.数据类型

void main(){
  // num: int and double
  int abc=110;
  int a=int.parse('119');

  double cde=220.111;
  double b=double.parse('111.222');

  //String
  String good=123.toString();
  String job=123.22322.toStringAsFixed(2);
  print(job);

  //bool
  //bool result=123>110;
  bool result=1=='1';
  print(result);

  //List 数据类型
  List list=[1,3,5,7,9];

  //List newList=new List();-------已弃用
  //newList.add(2);
  //newList.addAll([4,6,8,10]);//将数组中的所有元素添加进数组中
  //print(newList);
  //print(newList.length);
  //print(newList.first);
  //print(newList.last);
  //print(newList[2])
  
  //Map 对象类型
  Map obj={
    'x':1,
    'y':2,
    'z':3
  };
  // Map obj2=new Map();------已弃用
  // obj2['x']=1;
  // obj2['y']=2;
  print(obj);
  //print(obj2);
  print(obj.containsKey('x'));//是否包含某个key
  print(obj.containsKey('a'));
  obj.remove('y');
  print(obj);
}

3.Function

void main(){
  String username=getUserName();
  String userInfo=getPersonInfo(111);
  print(userInfo);
  int age=addAge(111);
  print(age);
  int age2=addAge2(age1:119);
  print(age2);

  var list=["abc","cde","def"];
  //匿名函数
  list.forEach((str) {
    print(str);
  });
}

String getUserName(){
  return "hello world";
}

String getPersonInfo(int userId){
  Map userInfoObj={
    "111":"zhangsan",
    "222":"lisi"
  };
  return userInfoObj[userId.toString()];
}

//可选参数
int addAge(int age1,[int age2=0]){
  return age1+age2;
}

//默认值
int addAge2({int age1=0,int age2=0}){
  return age1+age2;
}

4.类与继承

void main(){
  var p=new Person(23,"zhangsan");
  // p.age=123;
  print(p.age);
  print(p.name);
  p.sayHello();
  var w=new Worker(18, "lisi", 3500);
  w.sayHello();
}

//类
class Person{
  int age=0;
  String name="";
  //构造函数
  Person(int age,String name){
    this.age=age;
    this.name=name;
  }
  void sayHello(){
    print("my name is:"+this.name);
  }
}

//继承
class Worker extends Person{
  //Worker(super.age, super.name);
  int salary=0;
  //扩展
  Worker(int age,String name,int salary):super(age,name){
    this.salary=salary;
  }
  //重写
  //告诉编译器/程序员这是一个重写方法
  void sayHello(){
    super.sayHello();
    print("my salary is:"+this.salary.toString());
  }
}

5.mixin与抽象类

dart无法多继承

void main(){
  var p=new Person(18,"zhangsan");
  p.eat();
  p.sleep();
  p.sayHello();
}

mixin Eat{
  void eat(){
    print("eat");
  }
  // void sayHello(){
  //   print("say Hello in eat");
  // }
}

mixin Sleep{
  void sleep(){
    print("sleep");
  }
  // void sayHello(){
  //   print("say Hello in sleep");
  // }
}

//抽象类,不能被实例化
abstract class Animal{
  //抽象方法,需在实例中实现
  void have_a_baby();
}

//类
class Person extends Animal with Eat,Sleep{
  int age=0;
  String name="";
  //构造函数
  Person(int age,String name){
    this.age=age;
    this.name=name;
  }
  //混合里如果有同名方法,先找自身类的方法,后找混合的最后一个类的方法
  void sayHello(){
    print("my name is:"+this.name);
  }
  
  void have_a_baby() {
    print("have a baby");
  }
}

6.库

外部库需要在pubspec.yaml文件中写明加载依赖,然后在终端执行pub get
外部库网址:https://pub.dev

pubspec.yaml

//自写库
import 'pkg/Calc.dart';
//外部库
import 'package:http/http.dart' as http;
//dart自身库 延时加载
import 'dart:math' deferred as math;

// 如果pub get总是下载失败的话,可以使用国内的镜像
// 设定环境变量:PUB_HOSTED_URL=https://pub.flutter-io.cn
void main () async {
  int result = add(3,4);
  print(result);

  var m=new Calc(10, 5);
  m.minus();

  // var url = Uri.https('example.com', 'whatsit/create');
  // var response = await http.post(url, body: {'name': 'doodle', 'color': 'blue'});
  // print('Response status: ${response.statusCode}');
  // print('Response body: ${response.body}');
  //
  // print(await http.read(Uri.https('www.baidu.com')));
  
  // var r=new Random();
  // print(r.nextInt(10));
  await math.loadLibrary();
  var r=new math.Random();
  print(r.nextInt(10));
}
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值