Dart學習筆記 整合基礎知識實現的 Demo

2021-10-02 13:39:38 字數 2056 閱讀 9726

實現的功能是:購物車小票效果,效果圖如下:

分析要實現以上的購物車小票示例需要準備什麼?

為了用到已學習的繼承知識,定義乙個meta中間類存放商品的:名稱、**

class meta
再定義商品類good,繼承了meta類,並新增了count(數量)的字段

class good extends meta
有了商品資訊,以及商品金額計算的方法,下面來定義購物車類在購物車類中我們需要

因此購物車**如下:

//定義購物車類

class shoppingcart extends meta with printhelper ) : this.withcode(name: name, code: null);

// 有購物者及優惠碼的建構函式

shoppingcart.withcode() : date = datetime.now(), super(name, 0);

// 格式化輸出

getinfo() =>

'''購物車資訊:

----------------

商品名 單價 數量 總價

----------------

$ $ $ $').join('\n')}

***************=

使用者名稱: $name

優惠碼: $

總價: $price

日期: $date

''';

}

上面的**都好理解,有點難度的是在計算商品總價是使用了dart中的運算子過載功能。也可以不用運算子過載,直接在shoppingcart中定義乙個計算所有商品總價的方法,遍歷所有商品的**並計算即可。

既然dart提供了運算子過載功能,那麼我們就得用起來啊。

首先在需要在good類中過載+號運算子

good operator +(good item) => good(name + item.name, price * count + (item.price * item.count), 1);

// 結果就是把兩個 good 物件合併為乙個。新 good 物件的 name = name + item.name,price = price * count + (item.price * item.count) 。

然後在計算商品總價的時候可以使用

// reduce 函式是將陣列中的每乙個值與前面返回的值相加,最後返回相加的總和

double get price => bookings.reduce((item, itemtotalprice) => (item+ itemtotalprice)).price;

list[0...n].reduce(f)相當於就是:

a0 = list[0]

a1 = f(a0,list[1])

a2 = f(a1,list[2])

an = f(an-1,list[n])

reduce(f) 中的 f 是求和函式 f(x,y)=x+y,可以理解成 an=list[0]+list[1]+list[n-1]+list[n]

購物車類shoppingcart繼承了meta並實現了printhelper類,meta類我們已經實現了,下面來定義printhelper

mixin printhelper
以上就是購物車 demo 的實現。

Dart 基礎篇(二) 基礎知識

語法 main 與其他語言一致,分為單行注釋和多行注釋。在dart語言中,定義變數有三種方式 只能使用一種方式來定義,不能同時使用兩種方式定義乙個變數。通過關鍵字var可以宣告任何型別的變數,dart具有變數型別推斷的能力,乙個變數一旦被初始化,那麼這個變數的型別就確定了,就是這個初始化值的型別!v...

dart引數傳方法 dart語言基礎知識

一 dart入口方法介紹dart列印dart注釋 dart變數 常量 命名規則 main print hello world function set void dart是個強大的指令碼類語言,可以不預先定義變數型別,自動會i型別變數 dart 中定義變數可以通過var關鍵字可以通過型別來申明變數 ...

Dart語言學習一 基礎知識 語法學習

1 變數名字必須有數字 字母 下劃線或美元符號 組成。2 變數名字不能以數字開頭。3 變數不能為保留字或者是關鍵字。4 變數名稱區分大小寫,age和age是不同的變數。5 建議使用駝峰命名法。dart中只有int 和 double 兩種數值型資料,他們的父類是num。int a 100 double...