哥哥帶你回顧Dart

Dart重要概念:

1蒸甜,在變量中可以放置的所有東西都是對象,而每個對象都是類的實例臀规。無論數(shù)字者春、函數(shù)、和null都是對象辉懒。所有對象都繼承自object類阳惹。

2,盡管Dart是強類型的眶俩,但類型聲明時可選的莹汤,因為Dart可以推斷類型。如果要明確說明不需要任何類型颠印,請使用特殊類型dynamic纲岭。

3抹竹,Dart支持通用類型,如List<int>整數(shù)列表或者List<dynamic>任何類型對象列表

4止潮,Dart支持頂級函數(shù)窃判,如main,以及綁定到類或者對象的函數(shù)(分別是靜態(tài)方法和實例方法)喇闸。還可以在函數(shù)(嵌套或局部函數(shù))中創(chuàng)建函數(shù)

5袄琳,Dart支持頂級變量,以及綁定到類或者對象的變量(靜態(tài)和實例變量)燃乍。實例變量有時候被稱為字段或者屬性唆樊。

6,和Java不同的是刻蟹,Dart沒有公開窗轩、保護和私有的關(guān)鍵字。如果標識符以下劃線開頭座咆,則該標識符對其庫是私有的痢艺。

7,標識符可以是以字母或下劃線開頭介陶,然后是這些字符加上數(shù)字的任何組合

8堤舒,有時候某事物是一個表達還是一個語句是很重要的,所以這兩個詞要準確哺呜。

9舌缤,Dart工具可以報告兩種問題:警告和錯誤。警告只是表明代碼可能不工作某残,但不會阻止程序執(zhí)行国撵。錯誤可以是編譯時錯誤,也可以是運行時錯誤玻墅。編譯時錯誤阻止代碼的執(zhí)行介牙,運行時錯誤導(dǎo)致代碼執(zhí)行時引發(fā)異常。

1澳厢,變量

默認值:

未初始化的變量初始值為null环础,甚至具有數(shù)字類型的的變量最初也是null,因為數(shù)字就像dart中其他東西一樣剩拢,也是對象线得。

注意:在生產(chǎn)環(huán)境中,assert調(diào)用被忽略徐伐。在開發(fā)環(huán)境中當(dāng)assert(condition)的condition條件不為真時拋出一個異常贯钩。

Final 和 Const 修飾符:

如果從未向改變一個變量,使用final或const修飾。最終變量只設(shè)置一次角雷,const是一個編譯時常數(shù)(隱式的最終變量)最終的頂級或者類變量在第一次使用時被初始化熬尺。

注意:實例變量可以是final,但不能是const谓罗,【實例變量定義在對象一級,它可以被類中的任何方法或者其他類中的方法訪問季二,但是不能被靜態(tài)方法訪問】

對于想要在編譯時確定并且不再變的變量檩咱,使用const。如果const變量位于類級別胯舷,則將其標記為靜態(tài)const刻蚯。const關(guān)鍵字不僅可以聲明常量變量,還可以創(chuàng)建常量值桑嘶,以及聲明創(chuàng)建常量值的構(gòu)造函數(shù)炊汹。任何變量都可以賦一個常量值√佣ィ可以從cosnt聲明的初始化表示式中省略const讨便,可以更改一個非final的非const變量的值,即使它曾經(jīng)有一個const值以政。

數(shù)字字面量是編譯時常量霸褒,許多算術(shù)表達式也是編譯時常量,只要它們的操作數(shù)是編譯時常量盈蛮,就可以對數(shù)字進行求值废菱。

Dart字符串是UTF-16編碼,注意:==檢驗兩個對象是否相等。如果兩個字符串包含相同序列的代碼單元抖誉,那么他們是等價的殊轴。可以使用相鄰的字符串字面量+運算符連接字符串袒炉∨岳恚可以用 r 前綴創(chuàng)建一個原始的字符串。字符串字面量是編譯時常量我磁,只要任何內(nèi)插表達式都是編譯時常量韧拒,計算結(jié)果為null 或數(shù)值、字符串或布爾值十性。

數(shù)組

var list = 【1,2,3】

注意:分析器推斷該列表具有l(wèi)ist<int>類型叛溢,如果試圖想此列表添加非整型對象,則分析器或運行時引發(fā)錯誤劲适。

map是一個關(guān)聯(lián)鍵和值的對象楷掉,鍵和值都可以是任何類型的對象,每個鍵值出現(xiàn)一次霞势,但是您可以多次使用相同的值烹植。dart對map的支持是通過map字面量和map類型來提供的斑鸦。

注意:解析器推斷gifts的類型為Map<String, String>,nobleGases的類型為Map<int, String>草雕。如果您試圖向map添加錯誤類型的值巷屿,則分析器或運行時將引發(fā)錯誤。

var gifts = Map(); 在Dart中new關(guān)鍵字是可選的墩虹。要創(chuàng)建一個編譯時常量的map需要在map的字面量錢加const關(guān)鍵字嘱巾。

Rune(字符)

在dart中,字符是字符串的utf -32編碼點诫钓。Unicode為世界上所有的書寫系統(tǒng)中使用的每個字母旬昭、數(shù)字和符號定義唯一的數(shù)值。因為dart字符串是utf-13代碼單元的序列菌湃,所以在字符串中表示32位的Unicode值需要特殊的語法问拘。

注意:表示Unicode碼點的常用方法是\uXXXX其中XXXX是4位數(shù)的十六進制值。例如,心型字符(?)的編碼為\ u2665惧所。要指定大于或小于4位十六進制數(shù)字骤坐,請將值放在花括號中。例如笑臉表情(??)的編碼\u{1f600}.string類有幾個屬性可以用來獲取Rune信息下愈。codeUnitAt和codeUnit屬性返回16位代碼單元或油。使用字符屬性獲取字符串的字符。

注意:使用列表操作runes時要小心驰唬,根據(jù)特定的語言顶岸、字符串和操作,這種方法很容易出錯叫编。

symbols

符號常量是編譯時常量辖佣。

2,函數(shù)

函數(shù)也是對象搓逾【硖福可以分配給變量或者作為參數(shù)傳遞給其他函數(shù)。還可以向調(diào)用函數(shù)一樣調(diào)用dart類的實例霞篡。

Effective Dart建議對公共api使用類型注釋世蔗。

對于只包含一個表達式的函數(shù),可以使用簡寫語法朗兵。

=>expr 語法是{return expr;}的簡寫寫法污淋。“=>”符號有時被稱為胖箭頭語法余掖。注意:在箭頭(=>)和分號(;)之間只能出現(xiàn)一個表達式(不是語句)寸爆。例如,您不能在那里放一個if語句,但是您可以使用一個條件表達式赁豆。

函數(shù)可以有兩種類型的參數(shù)仅醇,必需的和可選的。首先列出必須的參數(shù)魔种,后邊是任何可選參數(shù)析二。命名可選參數(shù)也可以標記為@required〗谠ぃ可選參數(shù)可以是位置參數(shù)也可以是命名參數(shù)叶摄,但不能兩者都是⌒牧澹可以在任何Dart代碼(不僅僅是Flutter)中注釋一個已命名的參數(shù),并使用@required說明它是一個必傳的參數(shù)挫剑。

當(dāng)構(gòu)造Scrollbar時去扣,分析器在沒有子參數(shù)時報錯。Required在元包中被定義樊破∮淅猓或者直接使用import package:meta/meta.dart導(dǎo)入或者導(dǎo)入其他包含meta導(dǎo)出的包,例如Flutter的包:Flutter /material.dart哲戚。

函數(shù)可以使用=來定義位置參數(shù)的默認值奔滑。默認值必須是編譯時常量。如果沒有提供默認值顺少,則默認值為null朋其。

棄用注釋:舊代碼可能使用冒號(:)而不是=來設(shè)置命名參數(shù)的默認值。原因是最初脆炎,只有:被命名參數(shù)支持梅猿。這種支持很可能被棄用,因此我們建議您使用=來指定默認值秒裕。

還可以把列表或map集合作為默認值袱蚓。

main()

每個應(yīng)用程序都必須有一個頂級 的main函數(shù),它是應(yīng)用程序的入口點几蜻。返回void喇潘,并有一個可選的列表參數(shù)作為參數(shù)。

...語法稱為級聯(lián)梭稚,使用級聯(lián)可以對單個對象的成員執(zhí)行多個操作颖低。

可以使用args庫來定義和解析命令行參數(shù)。

可以創(chuàng)建一個沒有函數(shù)名稱的函數(shù)弧烤,稱為匿名函數(shù)枫甲,或者lambda函數(shù),或者閉包函數(shù),匿名函數(shù)看起來類似命名函數(shù)想幻,有0個或者多個參數(shù)粱栖,在括號之間用逗號和可選類型標注分隔。后面的代碼塊包含函數(shù)的主體脏毯。

詞法作用域

dart是一種在詞法上確定范圍的語言闹究,意味著變量的范圍是靜態(tài)的。僅僅是通過代碼的布局來決定的食店≡伲可以通過花括號想外一查看變量是否在范圍內(nèi)。

詞法閉包

閉包是一個函數(shù)對象吉嫩,它可以訪問其詞法范圍內(nèi)的變量价认,及時函數(shù)在其原始范圍之外使用。函數(shù)可以關(guān)閉周圍作用域中定義的變量自娩。

判斷函數(shù)相等

測試兩個對象x和y是否代表相同的東西用踩,使用==操作符。需要知道兩個對象是否完全相同的情況下忙迁,可以使用identical函數(shù)脐彩。

如果x或y為空,如果兩個都為空姊扔,則返回true;如果只有一個為空惠奸,則返回false。

返回方法調(diào)用x.= (y)的結(jié)果恰梢。(==等操作符是在第一個操作數(shù)上調(diào)用的方法佛南。您甚至可以覆蓋許多操作符,包括==嵌言,您將在可覆蓋操作符中看到)

共虑??=操作符盡在變量為null時會賦值呀页,未初始化和后來手動賦值為null情況都會執(zhí)行此操作賦值妈拌。

級聯(lián)表示法

級聯(lián)允許在同一個對象上創(chuàng)建一個操作 序列。除了函數(shù)調(diào)用之外蓬蝶〕痉郑可以訪問同一對象上的字段。通惩璺眨可以省去創(chuàng)建臨時變量的步驟培愁。

流程控制:

和js不同的是,條件不允許使用其他值缓窜,只能使用布爾值定续。

Assert(斷言)

如果布爾值為false谍咆,則使用assert語句中斷正常執(zhí)行。注意:Assert語句不會影響生產(chǎn)環(huán)境中代碼的執(zhí)行私股,它僅僅在測試環(huán)境中起作用摹察。在Flutter的調(diào)試模式下可以使用assert。默認情況下倡鲸,像(dartdevc typically)只支持開發(fā)環(huán)境的工具默認支持assert供嚎。例如dart和dart2js通過命令行標記:--enable-asserts來支持asserts。

斷言的第一個參數(shù)可以是任何解析為布爾值的表達式峭状。如果表達式的值為true克滴,則斷言成功并繼續(xù)執(zhí)行。如果是false优床,則斷言失敗劝赔,并拋出異常(AssertionError)。

異常處理

dart代碼可以拋出和捕獲異常胆敞。dart所有異常都是未檢查的異常着帽,方法不聲明可能拋出哪些異常,也不要求捕獲異常竿秆。提供exception和error類启摄,以及許多預(yù)定義的子類型稿壁。當(dāng)然也可以自定義異常幽钢。但dart程序可以拋出任何非空對象不僅僅是異常和錯誤對象。

dart具有類和基于mixin的繼承傅是,每個對象都是一個類的實例匪燕,所有類都是object的子類⌒剩基于mixin繼承意味著帽驯,盡管每個類(除了Object)都只有一個超類,但類主體可以多個類層次結(jié)構(gòu)中重用书闸。

構(gòu)造函數(shù)名可以是ClassName或ClassName.identifier尼变。

有些類提供常量構(gòu)造函數(shù),要使用常量構(gòu)造函數(shù)創(chuàng)建編譯時常量浆劲,請將const關(guān)鍵字放在構(gòu)造函數(shù)名之前嫌术。構(gòu)造兩個相同的編譯時常量會生成一個單一的,規(guī)范的實例牌借。在常量上下文中度气,可以構(gòu)造函數(shù)或文字之前省略const。

const關(guān)鍵字在dart2的常量上下文變成可選的膨报。

獲得類型對象

要在運行時獲得對象類型磷籍,可以使用對象的runtimeType屬性适荣,該屬性返回一個類型對象。

所有未初始化的實例變量都具有null值院领。都生成隱式的getter方法弛矛。非最終實例變量也生成隱式setter方法。

如果在聲明實例變量的地方栅盲,而不是在構(gòu)造函數(shù)或方法中初始化實例變量汪诉,則在創(chuàng)建實例時在構(gòu)造函數(shù)及其初始化列表執(zhí)行之前設(shè)置該值。

注意:只有在名稱沖突時才使用谈秫,否則dart代碼風(fēng)格要省略this

如果不聲明構(gòu)造函數(shù)扒寄,則為您提供默認構(gòu)造函數(shù),默認構(gòu)造函數(shù)沒有參數(shù)拟烫,并在超類中調(diào)用五參數(shù)構(gòu)造函數(shù)宜岛。

一定要記住構(gòu)造函數(shù)是不會從父類繼承的驰弄,這意味著父類的命名構(gòu)造函數(shù)子類也不會繼承。如果你希望使用在超類中定義的命名構(gòu)造函數(shù)來創(chuàng)建子類,則必須在子類中實現(xiàn)該構(gòu)造函數(shù)悔耘。

調(diào)用非默認的超類構(gòu)造函數(shù)

默認情況下,子類中的構(gòu)造函數(shù)調(diào)用父類的未命名無參數(shù)構(gòu)造函數(shù)栓始。父類的構(gòu)造函數(shù)體的開始處被調(diào)用艘希。如果類中有使用初始化列表。初始化列表將在調(diào)用超類之前執(zhí)行拇囊。執(zhí)行順序如下:

1迂曲,初始化列表

2,超類中的無參數(shù)構(gòu)造函數(shù)

3寥袭,main類中的無參數(shù)構(gòu)造函數(shù)

注意:在超類的構(gòu)造函數(shù)的參數(shù)中不能使用this關(guān)鍵字路捧,例如,參數(shù)可以調(diào)用static方法但是不能調(diào)用實例方法传黄。

初始化列表

可以通過在初始化列表中使用assert來驗證輸入杰扫。

初始化列表在設(shè)置final字段時很方便。

重定向構(gòu)造函數(shù)

常量構(gòu)造函數(shù)

工廠構(gòu)造函數(shù)

getter 和 setter方法

抽象方法

抽象類

使用abstract修飾符定義不能實例化的抽象類膘掰。抽象類對于定義接口非常有用章姓。如果希望抽象類可實例化,可以定義工廠構(gòu)造函數(shù)识埋。

隱式接口

每個類都隱式的定義一個接口凡伊,該接口包含類的所有實例成員及其實現(xiàn)的任何接口。如果想創(chuàng)建一個類A,它支持B的api而不繼承B的實現(xiàn)惭聂,那么類A應(yīng)該實現(xiàn)B接口窗声。

擴展類

使用extend創(chuàng)建子類,使用super引用超類:

重寫類的成員

子類可以覆蓋實例方法辜纲,getterhe setter ,可以使用@overrider注釋笨觅,

要在類型安全的代碼中縮小方法參數(shù)或?qū)嵗兞康念愋屠鼓停梢允褂胏ovariant關(guān)鍵字。

重寫操作符

重寫nosuchmethod方法來處理程序訪問一個不存在的方法或成員變量

不能調(diào)用沒有實現(xiàn)的方法见剩,除非以下任何一個是正確的:

被調(diào)用者有靜態(tài)方法dynamic杀糯,

被調(diào)用者有一個靜態(tài)類型來定義未實現(xiàn)的方法(抽象的也可以),而接受者的動態(tài)類型有一個nosuchmethod()的實現(xiàn)苍苞,它與類對象的方法不同固翰。

枚舉類型

使用enum關(guān)鍵字聲明枚舉類型:

枚舉中每個值都有一個索引getter,返回enum聲明中值的從0開始的位置羹呵。

要獲取枚舉中所有值列表骂际,可以使用enum的values常量。

可以在switch中使用enum冈欢,如果switch的case不處理enum所有值歉铝,會有一個警告信息。

枚舉類型有以下限制:

不能子類化凑耻,混合或?qū)崿F(xiàn)枚舉

不能顯式的實例化一個枚舉

添加mixins特性:

mixin是在多個類層次結(jié)構(gòu)中重用類代碼的一種方式太示。

要使用mixin,請在with關(guān)鍵字后面加上一個或多個mixiin名稱香浩。

靜態(tài)變量(類變量)實現(xiàn)類范圍的變量和方法:注意类缤,靜態(tài)變量在使用之前不會初始化。

靜態(tài)方法:靜態(tài)方法(類方法)不對實例進行操作邻吭,因此無法訪問該實例餐弱。注意:對于通用或廣泛使用的實用程序和功能,考慮使用頂級函數(shù)镜盯,而不是靜態(tài)方法岸裙。

可以使用靜態(tài)方法作為編譯時常量猖败,例如速缆,可以將靜態(tài)方法作為參數(shù)傳遞給常量構(gòu)造函數(shù)。

泛型:

泛型集合及其包含的類型:

dart通用類型被具體化恩闻,這意味著他們在運行時攜帶他們的類型信息艺糜。

相反,Java中泛型使用擦除幢尚。這意味著泛型類型參數(shù)在運行時被刪除破停,在Java中,可以測試一個對象是否是一個列表尉剩,但不能測試是否是list.

限制參數(shù)化類型:

在實現(xiàn)泛型類型時真慢,希望限制其參數(shù)類型,可以使用extends,也可以不指定泛型參數(shù)理茎。

在這里黑界,first上的泛型參數(shù)(<T>)允許你在很多地方使用類型參數(shù)T:

在函數(shù)的返回中返回類型(T)

在參數(shù)的類型中使用(List<T>)

在局部變量的類型中(T tmp)

庫的可見性:

以下劃線_開頭的標識符僅在庫里可見管嬉。每個dart應(yīng)用程序都是一個庫,即使它不使用庫指令朗鸠。

導(dǎo)入一個庫需要提供庫的URI蚯撩,對于內(nèi)置庫,URI具有特定的形式烛占。(dart:scheme),對于其他庫胎挎,可以使用文件路徑或者包:scheme的形式。

注意:URI表示統(tǒng)一資源標識符忆家。url(統(tǒng)一資源定位器)是一種常見的URI犹菇。

指定一個庫前綴

只導(dǎo)入庫的一部分:


延遲加載:

允許應(yīng)用在需要時按需加載庫

異步支持:

dart 庫中有非常多的函數(shù)返回Future對象或者stream對象,這些函數(shù)是異步的芽卿,在可能耗時的操作的語句之后不等到操作完成就返回项栏。

async 和await 支持異步編程。

處理future:

當(dāng)你需要一個完整的futures結(jié)果蹬竖,

1沼沈,使用async和await

2,使用future api

使用try catch finally 來處理使用await中的錯誤:

可以在函數(shù)中多次使用awiait币厕。

在await表達式中列另,表達式的值通常是一個future對象,如果不是旦装,那么這個值將被包裝成future页衙,future對象指示返回結(jié)果一定是一個對象。表達式的值就是被返回的對象阴绢。await表達式會讓程序執(zhí)行掛起店乐,知道返回對象可用。如果在使用await時出現(xiàn)編譯時錯誤呻袭,請確保await在異步函數(shù)中眨八,

注意,函數(shù)的主體不需要future api左电,如果需要廉侧,dart將創(chuàng)建future對象。如果函數(shù)沒有返回有用的值篓足,那么返回future<void>類型段誊。

處理流:

當(dāng)需要從stream獲取值的時候

1,使用async異步for循環(huán)(await for)

2栈拖,使用stream api?

表達式的值必須是具有stream類型连舍,

1,等待流發(fā)出值

2涩哟,執(zhí)行for循環(huán)的主體索赏,并將變量設(shè)置為發(fā)出的值

3诗鸭,重復(fù)1,2,直到流關(guān)閉参滴。

要停止監(jiān)聽流强岸,可以使用break,或return砾赔,跳出for循環(huán)蝌箍,并從流中取消訂閱。

生成器:

當(dāng)需要延遲的生成一個值的序列時暴心,請考慮使用生成器函數(shù)妓盲,dart內(nèi)置支持兩種生成器函數(shù)。

1专普,同步生成器:返回itearable對象悯衬。

2,異步生成器:返回stream對象檀夹。

可調(diào)用的類:

隔離器:

在dart中筋粗,函數(shù)是對象,和字符串?dāng)?shù)字一樣炸渡,typedf和funtion-type 為函數(shù)提供一個類型別名娜亿,可以在聲明字段和返回類型時使用這個名稱,當(dāng)函數(shù)被分配給變量時蚌堵,typedef保留類型信息买决。

當(dāng)給compare分配f時類型信息會丟失。f的類型是(Object, Object)->int(int表示返回值類型),當(dāng)然compare的類型是Function吼畏。如果我們更改代碼以使用顯式名稱和保留類型信息督赤,開發(fā)人員和工具都可以使用這些信息。

元數(shù)據(jù)

使用元數(shù)據(jù)提供關(guān)于代碼的附加信息泻蚊。元數(shù)據(jù)注釋以字符@開頭躲舌,后跟對編譯時常量(如deprecated)的引用或?qū)ΤA繕?gòu)造函數(shù)的調(diào)用。

所有Dart代碼都可以使用兩個注釋:@deprecated和@override

也可以定義自己的元數(shù)據(jù)注釋

元數(shù)據(jù)可以出現(xiàn)在庫藕夫,類孽糖,類型定義枯冈,類型參數(shù)毅贮,構(gòu)造函數(shù),工廠尘奏,函數(shù)滩褥,字段,參數(shù)或變量之前炫加,也可以出現(xiàn)在導(dǎo)入或?qū)С鲋噶钪肮寮澹梢允褂梅瓷湓谶\行時檢索元數(shù)據(jù)铺然。

文檔注釋:

Dart常用庫:

1, print

2,numbers

3,字符串和正則表達式

映射map

集合類型的公共方法

盡管map沒有實現(xiàn)itrable,但是可以使用map鍵值對屬性獲得酒甸。

URIs

Uri類提供了對字符串進行編碼和解碼的函數(shù)魄健,以便在Uri中使用(您可能知道url)。這些函數(shù)處理uri特有的字符插勤,例如&和=沽瘦。Uri類還解析并公開Uri主機、端口农尖、 協(xié)議等的組件析恋。

日期和時間

實用程序類 包括排序、映射盛卡,迭代

實現(xiàn)map鍵

迭代

異常

異步 Future

多個異步

使用異步for循環(huán)

監(jiān)聽數(shù)據(jù)流

改變數(shù)據(jù)流

dart:convert庫(API reference)為JSON和UTF-8提供了轉(zhuǎn)換器助隧,并且支持創(chuàng)建額外的轉(zhuǎn)換器。JSON是一種表示結(jié)構(gòu)化對象和集合的簡單文本格式滑沧。UTF-8是一種常見的變寬編碼并村,可以表示Unicode字符集中的每個字符

代碼風(fēng)格參考

庫的使用

字符串的使用

集合

函數(shù)的使用

參數(shù)

變量

成員

構(gòu)造函數(shù)

錯誤處理

異步

命名

庫的設(shè)計

類的設(shè)計

構(gòu)造函數(shù)

成員設(shè)計

類型設(shè)計

參數(shù)指南

代碼示例

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市滓技,隨后出現(xiàn)的幾起案子橘霎,更是在濱河造成了極大的恐慌,老刑警劉巖殖属,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姐叁,死亡現(xiàn)場離奇詭異,居然都是意外死亡洗显,警方通過查閱死者的電腦和手機外潜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挠唆,“玉大人处窥,你說我怎么就攤上這事⌒椋” “怎么了滔驾?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長俄讹。 經(jīng)常有香客問我哆致,道長,這世上最難降的妖魔是什么患膛? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任摊阀,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胞此。我一直安慰自己臣咖,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布漱牵。 她就那樣靜靜地躺著夺蛇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酣胀。 梳的紋絲不亂的頭發(fā)上蚊惯,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音灵临,去河邊找鬼截型。 笑死,一個胖子當(dāng)著我的面吹牛儒溉,可吹牛的內(nèi)容都是我干的宦焦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼顿涣,長吁一口氣:“原來是場噩夢啊……” “哼波闹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涛碑,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤精堕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蒲障,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歹篓,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年揉阎,在試婚紗的時候發(fā)現(xiàn)自己被綠了庄撮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡毙籽,死狀恐怖洞斯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坑赡,我是刑警寧澤烙如,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站毅否,受9級特大地震影響亚铁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搀突,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一刀闷、第九天 我趴在偏房一處隱蔽的房頂上張望熊泵。 院中可真熱鬧仰迁,春花似錦甸昏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雌隅,卻和暖如春翻默,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恰起。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工修械, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人检盼。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓肯污,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吨枉。 傳聞我的和親對象是個殘疾皇子蹦渣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容