Flutter学习笔记(二)------ 第一个flutter项目

一、Dart语法

dart语法较为简单,学过python和c++后发现大同小异。不过多介绍

1.函数

//调用方法传参

main() {
//1、定义一个方法 求1到这个数的所有数的和      60    1+2+3+。。。+60

  /*
    int sumNum(int n){
      var sum=0;
      for(var i=1;i<=n;i++)
      {
        sum+=i;
      }
      return sum;
    } 

    var n1=sumNum(5);
    print(n1);
    var n2=sumNum(100);
    print(n2);

 */

//2、定义一个方法然后打印用户信息

  // String printUserInfo(String username, int age) {
  //   //行参
  //   return "姓名:$username---年龄:$age";
  // }

  // print(printUserInfo('张三', 20)); //实参

//3、定义一个带可选参数的方法 ,最新的dart定义可选参数需要指定类型默认值

  // String printUserInfo(String username,[int age=0]){  //行参
  //   if(age!=0){
  //     return "姓名:$username---年龄:$age";
  //   }
  //   return "姓名:$username---年龄保密";
  // }
  // print(printUserInfo('张三',21)); //实参
  // print(printUserInfo('张三'));

//4、定义一个带默认参数的方法
  // String printUserInfo(String username,[String sex='男',int age=0]){  //行参
  //   if(age!=0){
  //     return "姓名:$username---性别:$sex--年龄:$age";
  //   }
  //   return "姓名:$username---性别:$sex--年龄保密";
  // }
  // print(printUserInfo('张三'));
  // print(printUserInfo('小李','女'));
  // print(printUserInfo('小李','女',30));

//5、定义一个命名参数的方法,最新的dart定义命名参数需要指定类型默认值

  // String printUserInfo(String username, {int age = 0, String sex = '男'}) {//行参    
  //   if (age != 0) {
  //     return "姓名:$username---性别:$sex--年龄:$age";
  //   }
  //   return "姓名:$username---性别:$sex--年龄保密";
  // }
  // print(printUserInfo('张三', age: 20, sex: '未知'));


//6、实现一个 把方法当做参数的方法

  // var fn=(){
  //   print('我是一个匿名方法');
  // };
  // fn();

  //方法
  fn1() {
    print('fn1');
  }

  //方法
  fn2(fn) {
    fn();
  }

  //调用fn2这个方法 把fn1这个方法当做参数传入
  fn2(fn1);
}

可以类比*args, **kwargs,与之不同的是dart中,*args **kwargs不能同时存在

void main() {
/*需求:使用forEach打印下面List里面的数据*/

  // List list=['苹果','香蕉','西瓜'];
  // list.forEach((value){
  //   print(value);
  // });
  // list.forEach((value)=>print(value));

  //注意和方法的区别: 箭头函数内只能写一条语句,并且语句后面没有分号(;)
  // list.forEach((value)=>{
  //   print(value)
  // });

/*需求:修改下面List里面的数据,让数组中大于2的值乘以2*/

  // List list=[4,1,2,3,4];
  // var newList=list.map((value){
  //     if(value>2){
  //       return value*2;
  //     }
  //     return value;
  // });
  // print(newList.toList());
  //  var newList=list.map((value)=>value>2?value*2:value);
  //  print(newList.toList());
  

/*
需求:    1、定义一个方法isEvenNumber来判断一个数是否是偶数  
         2、定义一个方法打印1-n以内的所有偶数
*/

// 1、定义一个方法isEvenNumber来判断一个数是否是偶数  
  bool isEvenNumber(int n) {
    if (n % 2 == 0) {
      return true;
    }
    return false;
  }
//  2、定义一个方法打印1-n以内的所有偶数
  printNum(int n) {
    for (var i = 1; i <= n; i++) {
      if (isEvenNumber(i)) {
        print(i);
      }
    }
  }
  printNum(10);
}
int getNum(int n) {
  return n;
}

void main() {
  // print(getNum(12));

  //匿名方法
  // var printNum=(){
  //   print(123);
  // };
  // printNum();

  // var printNum=(int n){
  //   print(n+2);
  // };
  // printNum(12);

//自执行方法

  // ((int n){
  //   print(n);
  //   print('我是自执行方法');
  // })(12);

//方法的递归
  // var sum = 1;
  // fn(int n) {
  //   sum *= n;
  //   if (n == 1) {
  //     return;
  //   }
  //   fn(n - 1);
  // }
  // fn(5);
  // print(sum);

//通过方法的递归 求1-100的和

  var sum=0;
  fn(int n){
      sum+=n;
      if(n==0){
        return;
      }
      fn(n-1);
  }

  fn(100);
  print(sum);
}

 

/*
闭包:

    1、全局变量特点:    全局变量常驻内存、全局变量污染全局
    2、局部变量的特点:  不常驻内存会被垃圾机制回收、不会污染全局  


  /*  想实现的功能:

        1.常驻内存        
        2.不污染全局   

          产生了闭包,闭包可以解决这个问题.....  

          闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)
  
	        闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。

    */  
*/

/*全局变量*/
var a = 123;

void main() {
  // print(a);

  // fn(){
  //   a++;
  //   print(a);
  // }
  // fn();
  // fn();
  // fn();

//局部变量
  // printInfo() {
  //   var myNum = 123;
  //   myNum++;
  //   print(myNum);
  // }

  // printInfo();
  // printInfo();
  // printInfo();

//闭包

  fn() {
    var a = 123; /*不会污染全局   常驻内存*/
    return () {
      a++;
      print(a);
    };
  }

  var b = fn();
  b();
  b();
  b();
}

二、创建项目

1.vscode

(1)安装flutter插件,之后配置flutterSDK路径和dart路径,分别为   flutter目录\bin  flutter目录\bin\cached\dart-sdk

(2)输入》flutter new project

2.目录结构

3.入口文件:main.dart

1.入口

程序从main启动,runApp里面放一个顶级控件,就可以显示该控件

如以上代码,创建了一个居中显示的文字。

如果你想知道空间都有哪些属性,可以按下ctrl然后点击这个控件,跳转到源代码仔细阅读。

2.装饰

scaffold 脚手架 建筑架;

我们一般把material App作为根组件,像这样: 

3.抽象、封装

4.基本组件

(1)Container

Flutter 是一种开源的跨平台移动应用开发框架,它由谷歌开发。使用 Flutter,开发者可以使用一套代码编写适用于iOS和Android的应用程序,这样可以大大提高开发效率。 Flutter 项目是指基于 Flutter 框架进行开发的移动应用项目Flutter 项目可以在一台开发者的电脑上进行开发,并通过编写控制台命令将应用程序打包成适用于不同操作系统的应用文件。 Flutter 项目具有以下特点: 1. 快速开发:Flutter 使用 Dart 语言编写代码,具有热重载功能,可以快速预览应用程序的更改效果。 2. 跨平台:Flutter 可以生成原生的应用程序,它具有相同的性能和外观体验,无论是在 iOS 还是 Android 平台上运行。 3. 自定义 UI:Flutter 提供了丰富的 UI 组件和材料设计风格的控件,开发者可以自定义UI界面,使应用程序与众不同。 4. 性能优化:Flutter 的渲染引擎可以直接绘制界面,提供高性能的渲染效果,使应用程序运行流畅。 5. 第三方插件支持:Flutter 支持丰富的第三方插件,可以快速实现各种功能,如地图、支付、数据存储等。 6. 社区活跃:Flutter 拥有庞大的开发者社区,可以快速获取解决问题的答案和支持。 总之,Flutter 项目是使用 Flutter 框架进行开发的移动应用项目,具有快速开发、跨平台、自定义 UI、性能优化和社区活跃等特点。在移动应用开发领域,Flutter 项目具有巨大的发展潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值