@dart

Stories List
@chengxuyuanlaoliu2024

Dart 3.7格式化工具“亂改代碼”?強迫症必看

哈嘍,我是老劉 一個從事軟件開發10年+,Flutter開發7年的程序員。 前兩天有個朋友諮詢升級到Flutter 3.35後的格式化問題。 簡單來説就是升級到Flutter 3.35(基於Dart 3.7以上)後,格式化後的代碼與之前的版本不同。 原先多行的代碼,格式化工具會自動刪除結尾的逗號,導致代碼合併成為一行。 其實這個是Dart 3.7引入的新特性,如果代碼比較短就合併成一行。 老

chengxuyuanlaoliu2024 Avatar

@chengxuyuanlaoliu2024

Nickname 程序員老劉

@obullxl

Flutter/Dart第04天:Dart異步編程(Future和async/await)

Dart官網代碼實驗室:https://dart.dev/codelabs/async-await 重要説明:本博客基於Dart官網代碼實驗室,但並不是簡單的對官網文章進行翻譯,我會根據個人研發經驗,在覆蓋官網文章核心內容情況下,加入自己的一些擴展問題和問題演示和總結,包括名稱解釋、使用場景説明、代碼樣例覆蓋、最後完整的場景編程等。 啓蒙:錯誤的異步編程樣例 下面是一個錯誤的異步編程樣例,大概過程

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第05天:Dart特殊特性Mixin詳解

Dart官網文檔:https://dart.dev/language/mixins 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 Mixin目的和使用方法(with) 官網文檔:Mixins are a way of defining code that can be reused in mult

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第06天:Dart基礎語法詳解(變量)

Dart官網文檔:https://dart.dev/language/variables 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 Dart中的變量 變量是一個對象的引用,引用名就是變量的名稱;就算引用是null的變量也一樣。 變量有3種定義方式:var關鍵字,顯示類型和Object/dyna

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第07天:Dart基礎語法詳解(庫、導入和關鍵字)

Dart官網文檔:https://dart.dev/language/libraries 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 Dart中的庫(Library) Dart語言對代碼的複用下了不少功夫,如前面講到的Mixin高級特性實現類級別代碼複用。本文介紹另一種更寬廣的代碼複用:庫。 D

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第08天:Dart類型(內置類型、記錄、集合、泛型和類型別名)

Dart內置類型(共10類) Dart官網文檔:https://dart.dev/language/built-in-types Dart內置類型即Dart SDK自帶的類型,我們編程過程中可直接使用的類型,主要分為10類: 數值類型:包括int類、double類等。 字符串類型:即String類。 布爾類型:即bool類。 記錄類型:即Record類,Dart 3中開始支持(最新版本的

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第09天:Dart高級特性Pattern模式的概覽和用法

Dart官方文檔:https://dart.dev/language/patterns 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 Pattern模式匹配的定義 官網定義:Patterns are a syntactic category in the Dart language, like s

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第10天:Dart高級特性Pattern模式的全部類型(共15種)

Dart官方文檔:https://dart.dev/language/pattern-types 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 和操作符一樣,模式運算也遵循一定的優先級規則,我們可以通過增加括號()讓低優先級規則的模式優先運算: 邏輯或模式低於邏輯與模式,邏輯與模式低於關係模式

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第11天:Dart函數方法詳解

Dart官方文檔:https://dart.dev/language/functions 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 Dart語言是純面向對象的編程語言,就是是函數也是對象,它的類型就是Function類(https://api.dart.dev/stable/3.1.3/dar

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第12天:Dart控制流詳解

Dart控制流主要由循環和分支組成: Dart官方文檔-循環:https://dart.dev/language/loops Dart官方文檔-分支:https://dart.dev/language/branches 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 循環 Dart可通過循環

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第13天:Dart錯誤處理

Dart官方文檔:https://dart.dev/language/error-handling 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 異常 和Java一樣,Dart也可以拋出異常,也可以捕獲異常。Dart異常如果未被捕獲,容易導致進程掛起和導致程序退出。所以,我們在編寫Dart程序時,

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第14天:Dart類詳解

Dart官方文檔:https://dart.dev/language/classes 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 Dart類 Dart語言基於類和Mixin繼承,是一門面向對象語言。任何對象都是某個類的實例,除Null之外,Object類其他所有類的父類。 Mixin繼承:Dar

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第15天:Dart類構造函數

Dart官方文檔:https://dart.dev/language/constructors 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 如下代碼樣例,和Java類似,最常用的生成式構造函數: class Point { double x = 0; double y = 0; P

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第16天:Dart類方法

Dart官方文檔:https://dart.dev/language/methods 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 實例方法 實例方法就是在類中定義的函數。對象的實例方法可訪問this實例和實例變量。如下代碼樣例,distanceTo()函數就是一個實例方法: import 'da

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第17天:Dart類繼承

Dart官方文檔:https://dart.dev/language/extend 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 類繼承(extends/super) Dart語言和Java語言一樣,也是通過extends關鍵字創建子類,通過super關鍵字引用父類: class Televisi

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第18天:Dart特性之可調用對象

Dart官方文檔:https://dart.dev/language/callable-objects 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 可調用對象:Dart實例如果實現了call()方法,那麼實例就可以像函數那樣被調用,這個對象就被稱為可調用對象。call()方法可以定義在任何類中,

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第19天:Dart高級特性之擴展方法(Extension methods)

Dart官方文檔:https://dart.dev/language/extension-methods 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 擴展方法概述 當我們使用了一些被廣泛使用的其他庫或者自己的庫時,我們不太可能去修改這個庫API,但是我們又想給庫增加一些方法,該怎麼辦?如:我們想

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第20天:Dart 3.0新特性之類型修飾符

Dart官方文檔:https://dart.dev/language/class-modifiers 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 類型修飾符主要是控制類或者Mixin如何被使用,包括在庫內部和外部使用。修飾符關鍵字出現在類型或Mixin申明的前面,如abstract class通

obullxl Avatar

@obullxl

Nickname 老牛啊

@obullxl

Flutter/Dart第21天:Dart異步編程(Future/Stream)

Dart官方文檔:https://dart.dev/language/async 重要説明:本博客基於Dart官網文檔,但並不是簡單的對官網進行翻譯,在覆蓋核心功能情況下,我會根據個人研發經驗,加入自己的一些擴展問題和場景驗證。 Future處理 我們有2種方式編寫Future異步代碼: 使用async和wait關鍵字 使用Future API(https://dart.dev/guides

obullxl Avatar

@obullxl

Nickname 老牛啊

@flutterdev

Dart 3.2 更新盤點

作者 / Kevin Moore 和 Michael Thomsen 我們隆重宣佈推出 Dart 3.2,這一版本針對以下方面做出了改進: 新增了一項語言功能,可對私有 final 字段進行非空升級;通過新增的互操作功能改善了開發者體驗;支持 DevTools 的擴展程序;並更新了我們的 Web 路線圖,包括提供對 Wasm (又名 WebAssembly) 的支持。 私有 final 字段的非

flutterdev Avatar

@flutterdev

Nickname Flutter社區

@chengxuyuanlaoliu2024

Dart的宏取消了,期待3年的功能,説沒就沒了?

哈嘍,我是老劉 就在剛剛結束的Fluttercon EU 2025上,Google Dart團隊宣佈:投入數年時間、無數工程師心血的宏功能開發,徹底停止了! 這不是延期,不是推遲,而是直接砍掉! 這意味着從2022年開始,Dart團隊投入的所有資源、所有原型開發、所有技術攻關,全部歸零。 作為一個六七年的Flutter老兵,同時也是從C/C++時代走過來的開發者,我對這個消息的震驚程度,可

chengxuyuanlaoliu2024 Avatar

@chengxuyuanlaoliu2024

Nickname 程序員老劉

@chengxuyuanlaoliu2024

Dart宏被砍掉的真相:為什麼Go、Python、Java等高級語言都拒絕宏?

哈嘍,我是老劉 前兩天的文章講了老劉對Dart宏功能的期待和Dart官方取消宏的一點觀點。 Dart的宏取消了,期待3年的功能,説沒就沒了? 有人評論説高級編程語言是不需要宏功能的。 雖然老劉自己是非常支持宏的,但是不得不説這個觀點其實也是有一定的道理的。 為啥這麼説呢? 接下來我就來對比一下C語言的宏和Dart的build_runner,看看各自的優劣在哪裏。 相信對比完大家也就能理解兩

chengxuyuanlaoliu2024 Avatar

@chengxuyuanlaoliu2024

Nickname 程序員老劉

@qngyun1029

flutter,json轉 dart model方法

目的有兩個: 1、將json轉成dart類,發揮強類型的優勢,能夠.出來提示,不容出錯,默認情況下只能obj['name']方式來訪問屬性; 2、將dart類轉成json;入庫需要; 其實最原始的方法就是將獲取到的json字符串jsonDecode(jsonStr),這樣,如果jsonStr是對象,就能得到MapString, dynamic,如果jsonStr是數組,就能得到List

qngyun1029 Avatar

@qngyun1029

Nickname qngyun1029