对移动端感兴趣,利用周末时间学习Flutter开发,持续记录学习笔记。

介绍

Flutter官网

GPT回答

Flutter 是由谷歌开发的一个跨平台移动应用开发框架,可以使用单一代码库构建高性能、高保真度的移动应用程序。它使用 Dart 编程语言,并提供了丰富的 UI 组件和工具,使开发者能够快速构建出漂亮、流畅的应用程序。

入门学习 Flutter 需要掌握以下几个关键知识:

  1. Dart 编程语言:Flutter 使用 Dart 作为开发语言,所以对 Dart 的基本语法、数据类型、控制流程、函数、类和对象等有一定的了解是必要的。你可以通过 Dart 官方文档和 DartPad(一个在线的 Dart 编辑器)来学习 Dart。

  2. Flutter 基础知识:学习 Flutter 的基础知识,包括 Flutter 的核心概念、Widget(UI 组件)的使用、布局和样式等。你可以通过 Flutter 的官方网站、Flutter 官方文档和 Flutter Gallery(一个展示各种 Flutter 组件和布局的示例应用)来学习。

  3. 响应式编程:Flutter 使用一种称为 "响应式编程" 的模式来构建用户界面。了解响应式编程的基本概念和使用方法对于使用 Flutter 构建应用程序非常重要。你可以学习 Dart 中的 Streams 和 RxDart 这样的库来了解更多关于响应式编程的知识。

  4. Flutter 组件库和插件:Flutter 提供了丰富的 UI 组件和插件,可以帮助你快速构建应用程序。了解这些组件和插件的使用方法,以及如何与 Flutter 的生态系统进行交互,将有助于你提高开发效率和应用程序的质量。

  5. Flutter 开发工具:掌握 Flutter 开发工具的使用,包括 Flutter SDK、Flutter 命令行工具、Flutter IDE(如 Visual Studio Code、Android Studio)和 Flutter DevTools(用于调试和性能分析)等。

Dart 是一种现代化的、面向对象的编程语言,最初由谷歌开发,用于构建跨平台的移动、Web 和桌面应用程序。Dart 的语法风格与许多其他编程语言相似,包括以下几种:

  1. JavaScript: Dart 借鉴了 JavaScript 的一些语法,例如函数声明、变量声明和赋值等。这使得从 JavaScript 切换到 Dart 相对较容易。

  2. Java / C#: Dart 在语法上与 Java 和 C# 有一些相似之处。例如,Dart 和 Java/C# 都是静态类型的语言,具有类、接口、继承等概念。

  3. Python: Dart 的一些语法特性与 Python 类似,如使用缩进来表示代码块,以及提供了类似于 Python 的迭代器和生成器等功能。

  4. Swift / Kotlin: Dart 与 Swift 和 Kotlin 这两门现代化的编程语言有一些相似之处。它们都是面向对象的语言,支持空安全、扩展函数和集合操作等高级功能。

总体而言,Dart 在语法上汲取了多种编程语言的优点,创造了一种简洁、直观且易于学习的语法。即使你对其他编程语言有所了解,学习 Dart 也应该是相对容易的。

Flutter架构

我们通过官方的一张图来看一下Flutter的架构:

学习资料

B站大地讲解Flutter

开发环境

Win-SDK

官网下载SDK安装包

 检验安装

dart --version

 Vscode开发配置

安装2个插件

Helo World

main() {
  print("Hello World"); // Hello World
}

 这样下来没问题,本地开发环境就配置好了,下面开始学习Dart的语法

基础语法

变量定义

Dart是强类型的语言,可以声明类型,也可以自动推导,注意  和PHP一样分号结尾

main() {
  var name = "GJH";
  print(name); //GJH

  int age = 23;
  print(age);
}

常量

在 Dart 中,const 和 final 都是用于声明常量的关键字,

 constconst 关键字用于声明在编译时就已经确定的常量。在使用 const 声明的变量时,它的值必须是在编译时已知的,不能是运行时计算出来的。const 可以用于声明常量值、字符串、布尔值、数值和对象等。

const PI = 3.14;

finalfinal 关键字用于声明只能赋值一次的变量。与 const 不同,final 可以在运行时计算并赋值。final 变量在第一次赋值后不能再次修改。

final PI2 = 3.14;

使用 final 声明的变量是在运行时确定的,因此可以根据需要赋予不同的值。每个 final 变量都具有唯一的值,并且可以在运行时根据需要进行计算或赋值。

数据类型

  1. Numbers(数字):

    • int:表示整数,如 1100-10
    • double:表示浮点数,如 3.141.5
  2. Strings(字符串):

    • String:表示一串字符,如 "Hello"'Dart'"123"
  3. Booleans(布尔值):

    • bool:表示布尔值,只有两个取值:true 和 false
  4. Lists(列表):

    • List:表示一个有序的集合,可以包含多个元素。列表中的元素可以是任意类型。例如:[1, 2, 3]['apple', 'banana', 'orange']
      main() {
        var list1 = ["GJH", 111, "xxxxxxxxxx"];
        print(list1); //[GJH, 111, xxxxxxxxxx]
        print(list1.length); // 3
        print(list1[0]); // GJH
      
        List list2 = [1, 2, 3, "Dart"];
        print(list2); //[1, 2, 3, Dart]
      
        // 指定类型
        var list3 = <int>[1, 2, 3];
        print(list3); // [1, 2, 3]
      
        List<String> list4 = ["Rust", "Dart", "Go"];
        print(list4); //[Rust, Dart, Go]
      }
  5. Maps(映射):

    • Map:表示一组键值对的集合,每个键关联一个值。键和值可以是任意类型。例如:{'name': 'John', 'age': 30}
      main() {
        var m1 = {"age": 23, "name": "GJH"};
        print(m1); //{age: 23, name: GJH}
      
        Map<String, int> m2 = {"age": 23, "Height": 180};
        print(m2); //{age: 23, Height: 180}
      
        var m3 = new Map<String, int>();
        m3["height"] = 180;
        m3["age"] = 23;
        print(m3); //{height: 11, age: 23}
      
        Map m4 = new Map();
        m4["name"] = "GJH";
        m4["age"] = 23;
        print(m4); //{name: GJH, age: 23}
        print(m4.length); //2
      }
  6. Sets(集合):

    • Set:表示一组互不相同的元素的集合。例如:{1, 2, 3}{'apple', 'banana', 'orange'}
  7. Runes(Unicode 字符):

    • Runes:表示一个字符串的 Unicode 字符集合。例如:Runes('Hello')
  8. Symbols(符号):

    • Symbol:表示 Dart 程序中声明的标识符。例如:#mySymbol

条件判断和别的语言都一样 Go php Java js

循环

  1. for 循环:

    for (var i = 0; i < 5; i++) {
      print(i);
    }
    

    上述代码将输出从 0 到 4 的数字。

  2. while 循环:

    var count = 0;
    while (count < 5) {
      print(count);
      count++;
    }
    

    上述代码将输出从 0 到 4 的数字。

  3. do-while 循环:

    var count = 0;
    do {
      print(count);
      count++;
    } while (count < 5);
    

    上述代码将输出从 0 到 4 的数字。不同于 while 循环,do-while 循环会先执行循环体,再判断条件是否满足。

  4. for-in 循环(用于迭代集合):

    var fruits = ['apple', 'banana', 'orange'];
    for (var fruit in fruits) {
      print(fruit);
    }
    

    上述代码将依次输出列表中的每个水果。

  5. forEach() 方法(用于迭代集合):

    var fruits = ['apple', 'banana', 'orange'];
    fruits.forEach((fruit) {
      print(fruit);
    });
    

    上述代码将依次输出列表中的每个水果。forEach() 方法接受一个函数作为参数,该函数将在列表中的每个元素上调用。