Flutter開發 dart語言基本語法

特點

Dart語言支持JIT與AOT。
Dart語言采用單線程模型。
Dart語言是強類型編程語言,但是允許弱類型語言式編程。

基本語法

1.變量和常量
變量
var、object、dynamic關鍵字或數據類型顯式聲明變量。

命名規則:

  • 變量名稱必須由數字、字母、下劃線或$組成;
  • 變量名開頭不能是數字;
  • 變量名不能是保留字或關鍵字;
  • 變量名區分大小寫;
void main() {//隱式聲明var i = "hello word";print(i);var j; //定義變量時,未指定默認值,則該變量的數據類型是可變的。// j = 100;j = "hello";print(j);//用object定義變量,重新賦值時,類型可變Object k = 1;k = "qwe";print(k);//dynamic  重新賦值,類型可變dynamic m = 10;m = "asdadasd";print(m);//顯式聲明//整數int age = 90;//浮點類型double d = 2;//字符串String  str = "11111";
}

常量
使用final或者const定義常量。final或const定義的常量時必須初始化,初始化后的常量是只讀的,不可變的。

  //常量final f = 10;print(f);const cc = 101;print(cc);final String str1 = "qwewqe";final double dd = 2.7;//final是正確的   const是錯誤的。// const 在“=”左邊,聲明的值一定是編譯時常量。//當const用在“=”右邊時,右邊對象的整個狀態值在編譯時完全確定,并且對象被凍結且完全不可變。final date = DateTime.now();const date1 = DateTime.now();

2.數值類型

  1. Number(數值類型)
    dart語言中的包括int和double兩種數據類型。
  var a = 10;//十進制10var h = 0xA;//十六進制10var d = 2.7;//十進制浮點型2.7//除號,算出來的值是double類型的int k = 10/2;//錯double k2 = 10/2;//對
  1. string
  String str = "ha ha ha";String str2 = 'hello';//拼接String aStr = "hello";String bStr = " word";String cStr = aStr + bStr;String ddStr = "$aStr$bStr";print(aStr.indexOf("e"));//字符首次出現的位置  1print(aStr.lastIndexOf("e"));//字符最后出現的位置 1print(aStr.substring(1,3));//字符最后出現的位置 elprint(aStr.split("e"));//拆分字符串  [h, llo]print(aStr.toUpperCase());//轉大寫  HELLOprint(aStr.toLowerCase());//轉小寫  helloprint(aStr.startsWith("he"));//是否以he開頭  trueprint(aStr.endsWith("lo"));//是否以lo開頭  trueprint(aStr.contains("lo"));//是否包含lo  trueprint(aStr.replaceAll("he", "1111"));//替換he為111   1111lloprint(aStr.compareTo("abc"));//比較字符串 1表示左邊的字符串大于右邊,0相等,-1 小于

3.Boolean

 bool  flag = false;

4.List

  List names = ["張三", "李四", "王五"];List names2 = ["張三", "李四", "王五", 12];print(names.length); //長度 3print(names[1]); //李四//添加元素names.add("趙六"); //[張三, 李四, 王五, 趙六]print(names);//刪除元素names.remove("李四"); //[張三, 王五, 趙六]print(names);//插入names.insert(1, 6666); //[張三, 6666, 王五, 趙六]print(names);//查找元素int i = names.indexOf(6666); // 1print(i);//將數組元素轉化為由特定符號分割print(names.join("@"));//張三@6666@王五@趙六

5.Set
Dart語言中Set表示一個元素唯一且無序的集合,不能通過索引下標獲取數據元素。

  var s = Set();s.add(1);s.add("張三");s.add(true);//list轉set,會去掉重復的元素List<int> lists = [1, 2, 3, 4, 3, 2, 5];Set ss = lists.toSet(); // {1, 2, 3, 4, 5}print(ss);

6.Map

  Map person = {"id": "001", "name": "zhang san", "age": "25"};//輸出所有的值print(person.values); //(001, zhang san, 25)//輸出所有的鍵print(person.keys); //(id, name, age)//輸出name的值print(person["name"]); //zhang san//添加鍵值對Map weight = {"weight": "120"};person.addAll(weight);print(person); //{id: 001, name: zhang san, age: 25, weight: 120}//刪除鍵值對person.remove("name");//{id: 001, age: 25, weight: 120}print(person);

7.List、Set、Map的常用方法

forEach遍歷

  //遍歷List list = ["蘋果","南瓜","西瓜"];list.forEach((element) {print(element);});I/flutter ( 2677): 蘋果
I/flutter ( 2677): 南瓜
I/flutter ( 2677): 西瓜

map遍歷用于修改元素的值

 List list = ["蘋果", "南瓜", "西瓜"];var ll = list.map((e) {return e + "1";});print(ll);I/flutter ( 2677): (蘋果1, 南瓜1, 西瓜1)

where用于過濾list或set中的數據元素,并返回一個集合。

  //保留大于3的值List list = [100, 1, 0, 2, 300, 150];var ll = list.where((element) {return element > 3;});print(ll);I/flutter ( 2677): (100, 300, 150)

any用于判斷list或set中的數據元素只要有一個滿足條件,返回值為true。

  List list = [100, 1, 0, 2, 300, 150];var has = list.any((element) {return element > 10;});print(has);var has1 = list.any((element) {return element > 1000;});print(has1);I/flutter ( 2677): true
I/flutter ( 2677): false

every用于判斷list或set中的數據元素全部滿足條件,返回值為true。

  List list = [100, 1, 0, 2, 300, 150];var f = list.every((element) {return element > 100;});print(f);var f2 = list.every((element) {return element > -1;});print(f2);I/flutter (20829): false
I/flutter (20829): true

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91774.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91774.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91774.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot:基于 Redis 自定義注解實現后端接口防重復提交校驗(冪等操作)

SpringBoot&#xff1a;基于 Redis 自定義注解實現后端接口防重復提交校驗&#xff08;冪等操作&#xff09;可基于 時間間隔 和 用于冪等判斷的參數名稱 實現防重復提交校驗 客戶端發送請求 ↓ [Spring Boot 應用入口]↓ ┌─────────────────────────…

【語音技術】意圖與語料

目錄 1. 意圖 1.1. 意圖分類 1.1.1 入口意圖&#xff08;Entry Intent&#xff09; 1.1.2 對話意圖&#xff08;Dialog Intent&#xff09; 1.2. 意圖類型切換操作步驟 2. 語料 2.1 語料分類詳解 2.2 語料編寫規范詳解 2.3 標簽符號深度說明 3. 詞槽 3.1 符類型要求 …

【MySQL集群架構與實踐5】使用Docker實現水平分片

目錄 一. 在Docker中安裝ShardingSphere 二. 實踐&#xff1a;水平分片 2.1 應用場景 2.2 架構圖 2.3 服務器規劃 2.4 創建server-user容器 2.5 創建server-order0和server-order1容器 2.6.日志配置 2.7 數據節點配置 2.8.測試數據節點 2.8.1.測試server_order0.t_or…

視覺圖像處理中級篇 [1]—— 彩色照相機的效果與預處理

在工業檢測中&#xff0c;黑白相機雖應用廣泛&#xff0c;但在應對顏色差異檢測時往往力不從心。彩色照相機憑借其對色彩信息的精準捕捉&#xff0c;成為復雜場景下的理想選擇&#xff0c;而預處理技術則進一步釋放了其性能潛力。一、彩色照相機的效果檢查蓋子上的金色標簽可以…

使用 BERT 的 NSP 實現語義感知切片 —— 提升 RAG 系統的檢索質量

在構建 Retrieval-Augmented Generation&#xff08;RAG&#xff09;系統時&#xff0c;文檔的切片方式至關重要。我們需要將長文本切分成合適的段落&#xff08;chunks&#xff09;&#xff0c;然后存入向量數據庫進行召回。如果切得太粗&#xff0c;會丟失上下文細節&#xf…

使用STM32CubeMX生成的STM32CubeIDE工程在更改工程名后編譯失敗問題解決

0 問題描述 使用STM32CubeMX生成STM32CubeIDE工程,然后使用STM32CubeIDE改名后編譯提示如下錯誤: 1 問題原因及解決辦法 1.1 問題原因 原因在于更名后STM32CubeIDE沒有自動更新引用關系,這是因為我們使用STM32CubeMX生成代碼時沒有勾選在根目錄下生成: 取消勾選在根目…

8月3日星期日今日早報簡報微語報早讀

8月3日星期日&#xff0c;農歷閏六月初十&#xff0c;早報#微語早讀。1、廣西防城港&#xff1a;奔馳女司機身份已查清&#xff0c;結果將統一對外發布&#xff1b;2、陳藝文、陳佳包攬游泳世錦賽女子跳水三米板金銀牌&#xff1b;3、九省份保險業已賠付暴雨災害損失5.2億元&am…

wxPython 實踐(六)對話框

wxPython 實踐&#xff08;一&#xff09;概述 wxPython 實踐&#xff08;二&#xff09;基礎控件 wxPython 實踐&#xff08;三&#xff09;頁面布局 wxPython 實踐&#xff08;四&#xff09;事件響應 wxPython 實踐&#xff08;五&#xff09;高級控件 wxPython 實踐&#x…

MATLAB科研數據可視化技術

互聯網的飛速發展伴隨著海量信息的產生&#xff0c;而海量信息的背后對應的則是海量數據。如何從這些海量數據中獲取有價值的信息來供人們學習和工作使用&#xff0c;這就不得不用到大數據挖掘和分析技術。數據可視化分析作為大數據技術的核心一環&#xff0c;其重要性不言而喻…

文明存續的時間博弈:論地球資源枯竭臨界期的技術突圍與行動緊迫性

摘要當地球資源消耗以指數級速度逼近生態承載力極限&#xff0c;人類文明正面臨“存續還是消亡”的終極抉擇。本文基于地球資源枯竭的實證數據與技術突破的可行性分析&#xff0c;揭示文明存續的時間窗口已進入不可逆臨界期&#xff08;2040-2070年&#xff09;&#xff0c;論證…

Elasticsearch 8.19.0 和 9.1.0 中 LogsDB 和 TSDS 的性能與存儲改進

作者&#xff1a;來自 Elastic Martijn Van Groningen 探索 TSDS 和 LogsDB 的最新增強功能&#xff0c;包括優化 I/O、提升合并性能等。 Elasticsearch 帶來了許多新功能&#xff0c;幫助你為你的使用場景構建最佳搜索解決方案。通過我們的示例筆記本深入學習&#xff0c;開始…

cs336之注意pytorch的tensor在哪里?(assert的使用)

問題 記住&#xff1a;無論何時你在pytorch中有一個張量tensor&#xff0c;你應該始終問一個問題&#xff1a;它當前位于哪里&#xff1f; 注意它在CPU還是在GPU中。要判斷它在哪里&#xff0c;可以使用python的assert斷言語句。 assert斷言 在 Python 中&#xff0c;assert 是…

Mysql 分區表

分區表是將一張表分成多張獨立子表&#xff0c;每個子表是一個區&#xff0c;目的是提高查詢效率。 從 server 層來看&#xff0c;只有一張表。但是從引擎層來看&#xff0c;是多張表&#xff0c;對應多個.idb文件。引擎層訪問數據只訪問特定分區表&#xff0c;也只對特定分區表…

Makefile 入門與實踐指南

Makefile 是用于 make 工具的配置文件&#xff0c;它定義了如何編譯和鏈接你的項目&#xff0c;讓構建過程自動化。一、核心概念 make 的核心思想是 “目標”&#xff08;Target&#xff09; 和 “依賴”&#xff08;Dependencies&#xff09;&#xff1a; 目標 (Target)&#…

分布式微服務--Nacos作為配置中心(補)關于bosststrap.yml與@RefreshScope

一、關于bosststrap.yml? bootstrap.yml 和 application.yml 的區別對比項bootstrap.ymlapplication.yml加載時機優先于 application.yml 加載&#xff08;啟動早期&#xff09;程序初始化完成后加載主要用途設置應用的外部配置源、注冊中心信息等設置應用內部配置&#xff0c…

[Qt]QString 與Sqlite3 字符串互動[漢字不亂碼]

環境&#xff1a;Qt C&#xff08;msvc c&#xff09;1.將與數據庫交互的代碼文件編碼轉換為utf-8-bom編碼&#xff0c;&#xff08;可使用notepad 進行轉換&#xff09;2.在代碼文件頭文件中加上下面代碼。//vs2010 版本是 1600 #if defined(_MSC_VER) && (_MSC_VER &…

SpringBoot啟動項目詳解

SpringBoot 的啟動過程是一個整合 Spring 核心容器、自動配置、嵌入式服務器等功能的復雜流程&#xff0c;核心目標是 “簡化配置、快速啟動”。下面從入口類開始&#xff0c;逐步拆解其詳細啟動步驟&#xff1a;一、啟動入口&#xff1a;SpringBootApplication與main方法Sprin…

PCB 控深槽如何破解 5G 基站 120℃高熱魔咒?

5G 基站在高頻通信下的功耗較 4G 基站提升 3-4 倍&#xff0c;射頻模塊、電源單元等核心部件的工作溫度常突破 120℃&#xff0c;遠超設備安全閾值&#xff08;≤85℃&#xff09;&#xff0c;形成制約通信穩定性的 “高熱魔咒”。印制線路板&#xff08;PCB&#xff09;作為熱…

NEXT.js 打包部署到服務器

在網上查了一下&#xff0c;記錄一下1.首先執行打包命令&#xff0c;我這個項目是用的pnpm&#xff0c;可以根據項目需求使用 npm 或者別的pnpm run build2.打包完成后會有一個 .next 的文件夾&#xff0c;需要把下圖的這些文件放到服務器。服務器需要有node環境之后就需要執行…

【AI分析】uv庫自動安裝腳本uv-installer-0.8.3.ps1分析

目錄uv 安裝腳本完整分析報告1. 腳本概述2. 參數解析3. 環境變量控制4. 核心函數詳解a. Install-Binary&#xff08;主控函數&#xff09;b. Get-TargetTriple&#xff08;架構檢測&#xff09;c. Download&#xff08;下載處理&#xff09;d. Invoke-Installer&#xff08;安裝…