Error Rules
在引用其他模塊的頭文件時(shí),應(yīng)該通過‘package:xxx’來引用(always_use_package_imports)
避免通過使用**lib/中的**
相對路徑來引用其他模塊的文件.
避免直接使用一個(gè)dynamic類型的對象(avoid_dynamic_calls (experimental))
不應(yīng)該直接使用一個(gè)dynamic對象,包括直接獲取一個(gè)dynamic對象的屬性,或者直接對于一個(gè)dynamic對象調(diào)用方法,而是應(yīng)該將他轉(zhuǎn)換為一個(gè)特定的類型,再繼續(xù)使用.
避免在ifelse中的else語句為空(avoid_empty_else)
避免else的語句為空.
在線上代碼中應(yīng)該避免使用print(avoid_print)
應(yīng)該在正式環(huán)境的代碼中去掉對print方法的調(diào)用.
避免使用相對路徑引用(avoid_relative_lib_import)
避免在lib中使用相對路徑的引用,而使用package.
在返回類型為future的方法中,避免返回null(avoid_returning_null_for_future)
在需要返回Future的方法中,不應(yīng)該返回null。
避免使用慢速的異步io方法(avoid_slow_async_io)
避免使用 **dart:io**
中的異步慢速io方法,而使用他們對應(yīng)的同步io方法.
避免在線上代碼中使用toString()方法,而應(yīng)該使用自定義的方法,來實(shí)現(xiàn)將類中數(shù)據(jù)轉(zhuǎn)換成字符串.
避免參數(shù)的名稱和類型的名稱重名(avoid_types_as_parameter_name)
參數(shù)的名稱不應(yīng)該和任何一個(gè)已知的類重名.
不要在Flutter的web plugin外使用web庫(avoid_web_libraries_in_flutter)
不要在僅可在web中使用的庫在web插件外的地方使用.(**dart:html**
, **dart:js**
and **dart:js_util**
)
在使用stream時(shí),使用完一定要對stream調(diào)用cancel方法(cancel_subscriptions)
要對StreamSubscription使用cancel方法,防止內(nèi)存泄漏.
在使用sink時(shí),使用完一定要調(diào)用close方法(close_sinks)
要對**dart.core.Sink 使用close方法,以防止內(nèi)存泄漏**
.
阻止控制流進(jìn)入finally語句中(control_flow_in_finally)
組織控制流進(jìn)入finally語句中,這樣會(huì)導(dǎo)致很難調(diào)試.
diagnostic應(yīng)該覆蓋所有的屬性(diagnostic_describe_all_properties)
應(yīng)該覆蓋所有的公共屬性在debug的方法中以便更好的進(jìn)行調(diào)試.
空語句和誤用分號(hào)很類似.
hash和==應(yīng)該同時(shí)被覆蓋或者改寫(hash_and_equals)
永遠(yuǎn)同時(shí)覆蓋 **hashCode**
如果覆蓋 **==**
.
不要在條件判斷中賦值或者對同一個(gè)條件判斷兩次(invariant_booleans (experimental))
條件判斷語句中不應(yīng)該永遠(yuǎn)是true或者false.
在迭代中不要使用contains來判斷不相關(guān)的類型(iterable_contains_unrelated_type)
調(diào)用 Iterable.contains 會(huì)調(diào)用==而返回false.
在list中不要?jiǎng)h除不相關(guān)的類型(list_remove_unrelated_type)
在list中刪除不相關(guān)的類型會(huì)返回false,而這往往是開發(fā)者所未預(yù)料到的.
在判斷語句中只進(jìn)行真假的判斷(literal_only_boolean_expressions)
判斷語句中只進(jìn)行真假的判斷,而不要進(jìn)行賦值等各種其他操作.
不要在list中連接字符串(no_adjacent_strings_in_list)
這個(gè)很有可能意味著忘記了使用逗號(hào)來分隔list中的元素.
不要再case中有重復(fù)的值(no_duplicate_case_value)
在switch-case語句中,case中的值不應(yīng)該有重復(fù)的.
在creatState方法中不應(yīng)該有任何邏輯(no_logic_in_create_state)
createState方法中只應(yīng)該有創(chuàng)建state的方法調(diào)用,而不應(yīng)該有其他的任何邏輯.
引用同一模塊的頭文件時(shí),使用相對路徑(prefer_relative_imports)
在引用同一模塊下的其他 **lib/下的文件的頭文件時(shí),使用相對路徑**
.
在void可以使用的時(shí)候,不要使用NULL(prefer_void_to_null)
不要使用Null類型,除非你確認(rèn)你不希望使用void .
在復(fù)寫==方法時(shí),一定要判斷傳入的參數(shù)的類型(test_types_in_equals)
復(fù)寫類的==方法時(shí),一定要判斷入?yún)⒌念愋停苑乐箓魅雗ull等.
在finally中不應(yīng)該拋出error(throw_in_finally)
避免在finally中使用throw,這會(huì)導(dǎo)致代碼的調(diào)試?yán)щy.
無用的代碼應(yīng)該及時(shí)刪除(unnecessary_statements)
避免使用無意義的diamanté和避免使用無用的語句在代碼中,并且應(yīng)該及時(shí)刪除.
不要使用==來比較兩個(gè)無關(guān)的類(unrelated_type_equality_checks)
==來比較無關(guān)的兩個(gè)類,有可能導(dǎo)致返回false,但是沒法達(dá)到開發(fā)者的目的.
在同步方法中使用BuildContexts(use_build_context_synchronously (experimental))
如果在異步方法中使用 BuildContexts,可能會(huì)導(dǎo)致BuildContexts雖然已經(jīng)被銷毀,仍然被使用的情況.
在組件的初始化方法中一定要使用key(use_key_in_widget_constructors)
在組件的初始化方法中一定要使用key,并調(diào)用super將key傳入super的初始化方法.
正則表達(dá)式應(yīng)該是有效的(valid_regexp)
正則表達(dá)式的書寫應(yīng)該是有效的,否則在運(yùn)行時(shí)會(huì)報(bào)錯(cuò).
Only reference in scope identifiers in doc comments.
Avoid unsafe HTML APIs.
Style Rules
總是標(biāo)明方法的返回類型(always_declare_return_types)
聲明方法的返回類型.
控制語句的控制體總是新起一行(always_put_control_body_on_new_line)
在控制語句中,每一個(gè)控制體總是新起一行來實(shí)現(xiàn).
將必傳命名參數(shù)放在參數(shù)列表的第一位(always_put_required_named_parameters_first)
將必傳命名參數(shù)放在第一位.
總是指定參數(shù)的類型(always_specify_types)
使用變量和參數(shù)時(shí),總是明確的指定參數(shù)的類型.
使用override注解來覆蓋父類的方法和參數(shù)(annotate_override)
使用override以防止參數(shù)被意外的覆蓋.
在非必要的情況下避免使用dynamic作為返回值或者函數(shù)的參數(shù)(avoid_annotating_with_dynamic)
在非必要的情況下,不使用dynamic作為返回值或者函數(shù)參數(shù)的類型,可以直接省略類型.
在條件表達(dá)式中避免使用bool字面值(avoid_bool_literals_in_conditional_expressions)
在條件表達(dá)式中,避免直接使用true和false.
不要在catch中不指定exception的類型(avoid_catches_without_on_clauses)
以防止捕捉到其他非意料到的異常而未做正確處理.
不要顯式的捕捉error(avoid_catching_errors)
Error和Exception不同,不應(yīng)該主動(dòng)的捕捉.Error可以在運(yùn)行前提前檢查并解決掉。
不要定義只有靜態(tài)變量和靜態(tài)方法的類(avoid_classes_with_only_static_members)
靜態(tài)變量可以以常量來替代,靜態(tài)方法可以以全局函數(shù)來替代.
不要檢查類型是int或者double,應(yīng)該檢查num(void_double_and_int_checks)
編譯成js的時(shí)候都會(huì)變成float類型.
不要對未標(biāo)記為@immutable的類覆蓋==和hashcode方法(avoid_equals_and_hash_code_on_mutable_classes)
這個(gè)操作可能引發(fā)未可知的問題.
通過雙引號(hào)來消除字符串中的轉(zhuǎn)義字符(avoid_escaping_inner_quotes)
雙引號(hào)來引用字符串,可以不需要對字符進(jìn)行轉(zhuǎn)義.
在常量類中避免進(jìn)行初始化(avoid_field_initializers_in_const_classes)
而直接通過get方法獲取常量屬性.
不要使用foreach來進(jìn)行遍歷(avoid_function_literals_in_foreach_calls)
在Dart中,如果要迭代序列,那么慣用的方法就是使用循環(huán).
不要使用implement來實(shí)現(xiàn)一個(gè)覆蓋了==方法的父類(avoid_implementing_value_types)
這樣在子類中,父類的==實(shí)現(xiàn)并不會(huì)被繼承.
不要顯式的初始化一個(gè)變量為null(avoid_init_to_null)
可以不初始化它.
避免使用難以被轉(zhuǎn)換為js的int數(shù)字(avoid_js_rounded_ints)
在編譯成js的時(shí)候int和double會(huì)被轉(zhuǎn)換為js中的number類型.
不要在一行中聲明多個(gè)變量(avoid_multiple_declarations_per_line)
每一個(gè)變量應(yīng)該單獨(dú)一行來聲明.
不要在自定義的==中判斷是否等于null(avoid_null_checks_in_equality_operators)
只要判斷類型是否相同,就能確定他是否是null了.
不要使用位置布爾參數(shù)(avoid_positional_boolean_parameters)
要是用命名布爾參數(shù),否則很難辨認(rèn)布爾參數(shù)的含義.
不要使用私有的typedef函數(shù)定義(avoid_private_typedef_functions)
只使用一次的 typedef 函數(shù)定義,可以直接使用內(nèi)聯(lián)函數(shù).
不要重復(fù)設(shè)置參數(shù)的值(avoid_redundant_argument_values)
對于已經(jīng)有默認(rèn)值的函數(shù)可選參數(shù),使用時(shí)不應(yīng)該再重復(fù)設(shè)置和他默認(rèn)值相同的值.
不要重命名覆蓋函數(shù)的參數(shù)變量的名稱(avoid_renaming_method_parameters)
應(yīng)該變量的名稱保持一致.
不要設(shè)置setters方法的返回值(avoid_return_types_on_setters)
因?yàn)閟etter方法不應(yīng)該有返回值.
在返回類型為bool、double、int、num的函數(shù)中,不應(yīng)該返回null(avoid_returning_null)
應(yīng)該返回一個(gè)默認(rèn)值當(dāng)前類型值.
在無返回值的void函數(shù)中,不應(yīng)該返回null(void_returning_null_for_void)
應(yīng)該直接使用retrun即可.
避免在流式接口中返回this(avoid_returning_this)
直接使用..來實(shí)現(xiàn)流式接口.
不要只實(shí)現(xiàn)setters而不實(shí)現(xiàn)getters(avoid_setters_without_getters)
這樣容易出現(xiàn)錯(cuò)誤.
不要不使用類型參數(shù)的類型(avoid_shadowing_type_parameters)
在類中定義了類型參數(shù),就應(yīng)該在類中的方法中使用,而不應(yīng)該使用其他類型參數(shù).
avoid_single_cascade_in_expression_statements
Avoid single cascade in expression statements.
avoid_types_on_closure_parameter
Avoid annotating types for function expression parameters.
不要使用沒有必要的containers(avoid_unnecessary_containers)
沒有其他參數(shù)的containers沒有任何作用,反而增加widget的層級.
不要在初始化方法中使用沒必要的參數(shù)(avoid_unused_constructor_parameters)
初始化方法中的所有參數(shù),都應(yīng)該有用處,并被使用.
異步方法async應(yīng)該有Future的返回類型(avoid_void_async)
異步方法不應(yīng)該返回void類型,而是應(yīng)該返回Future類型.
await方法只應(yīng)該用在future上(await_only_future)
可以使用await在**Future<X>**
, **FutureOr<X>**
, **Future<X>?**
, **FutureOr<X>?**
and **dynamic或者null上**
對于extension應(yīng)該使用駝峰命名(camel_case_extension)
使用駝峰命名規(guī)則來命名extension.
類名和typedef應(yīng)該使用駝峰命名法(camel_case_types)
應(yīng)該使用首字母大寫的駝峰命名法而且不要有下劃線.
當(dāng)對同一個(gè)對象連續(xù)調(diào)用方法時(shí),使用層疊樣式(cascade_invocations)
使用..語法,對同一個(gè)對象連續(xù)調(diào)用方法.
不要將一個(gè)nullable對象強(qiáng)制轉(zhuǎn)換為一個(gè)非空對象(cast_nullable_to_non_nullable (experimental))
轉(zhuǎn)換后可能會(huì)導(dǎo)致不會(huì)做非空判斷.
常量名稱使用小寫字母開頭的駝峰命名(constant_identifier_names)
命名使用小寫字母開頭的駝峰命名.
總是在控制流中使用大括號(hào)來括住控制語句(curly_braces_in_flow_control_structures)
使用大括號(hào)來括住控制語句可以保證不出現(xiàn)懸垂語句.
類中的deprecated應(yīng)該保持一致(deprecated_consistency)
類如果廢棄他的初始化方法應(yīng)該標(biāo)識(shí)為廢棄,屬性廢棄則初始化方法中對于此屬性的引用應(yīng)該廢棄.
對于dart:的引用應(yīng)該在其他引用之前(directives_ordering)
對于頭文件的引用應(yīng)該首先寫dart庫中的頭文件.
不要使用空的catches block(empty_catches)
如果想要忽略它,應(yīng)該異常的參數(shù)使用_來表示.如果是故意制造的異常,應(yīng)該寫注釋。
不要使用大括號(hào)來括住空的初始化方法(empty_constructor_bodies)
要是用分號(hào) **;**
而不是大括號(hào) **{}來表示空的初始化方法體**
.
switch-case中應(yīng)該列出case的所有可能(exhaustive_cases)
應(yīng)該分別列出case中的所有能,并針對性的做處理.
文件名稱應(yīng)該以小寫字母加下劃線的規(guī)則來命名(file_names)
**代碼文件的名稱應(yīng)該遵循lowercase_with_underscores**
.
不要引用其他package的lib/src文件夾下的文件(implementation_imports)
只應(yīng)該引用lib文件夾下的文件,src是package的具體實(shí)現(xiàn),可能隨時(shí)被修改.
庫的名稱應(yīng)該使用小寫字母加下劃線(library_names)
庫的命名規(guī)則應(yīng)該遵循 **lowercase_with_underscores**
.
引用庫的前綴應(yīng)該遵循小寫字母沒有下劃線格式(library_prefixes)
使用 **lowercase_with_underscores**
規(guī)則import ‘dart:,math‘ as math.
不要在庫的公開的API中使用私有類型(library_private_types_in_public_api)
避免在對外開放的API中使用似有類型.
非常量屬性應(yīng)該使用小寫字母命名規(guī)范(non_constant_identifier_names)
非常量屬性命名遵循 lowerCamelCase規(guī)范.
不要對一個(gè)可能為空的參數(shù)上使用是否為空的判斷(null_check_on_nullable_type_parameter (experimental))
這種很容易出現(xiàn)錯(cuò)誤不要使用T!而是使用T as W.
不要將null作為一個(gè)匿名函數(shù)傳遞給參數(shù)(null_closure)
當(dāng)需要一個(gè)內(nèi)明函數(shù)作為參數(shù)的時(shí)候不要直接傳null .
不要設(shè)置局部變量的類型(omit_local_variable_types)
局部變量一般很容易從上下文中判斷出他的類型.
不要定義只有一個(gè)成員的類(one_member_abstracts)
如果一個(gè)簡單的函數(shù)定義可以替代就不要重新定義一個(gè)類.
只拋出error或者exception類型的異常(only_throw_errors)
只拋出 Exception 或者 Error或者他們子類的異常.
通常覆蓋父類的屬性都是錯(cuò)誤的.
應(yīng)該給package中的公共類提供文檔(package_api_docs)
給公開的API提供文檔注釋.
應(yīng)該給package中的類名添加前綴(package_prefixed_library_names)
添加包名.路徑名.
不要給方法中的參數(shù)重新賦值(parameter_assignments)
這種做法很容易造成錯(cuò)誤,除非你使用 ??=.
使用相鄰字符串來連接字符串(prefer_adjacent_string_concatenation)
定義的相鄰字符串會(huì)自動(dòng)連接而不是用+.
初始化函數(shù)中在初始化列表中使用assert(prefer_asserts_in_initializer_lists)
而不是在初始化函數(shù)的函數(shù)體中做assert.
在assert中需要加一個(gè)提示信息(prefer_asserts_with_messag)
assert命中的時(shí)候并不是總是知道是什么原因造成的.
使用集合字面量(prefer_collection_literals)
使用[],{},使用[]或者{},但是LinkedHashSet和LinkedHashMap除外.
使用??=來代替判空(prefer_conditional_assignmen)
如果只是針對簡單的判空賦值,直接使用??=.
使用const來修飾具有const初始化方法產(chǎn)生的對象(prefer_const_constructors)
盡量使用const來修飾.
對于不可變的類,需要使用const來修飾初始化方法(prefer_const_constructors_in_immutables)
對于聲明為 **@immutable**
類的初始化方法需要設(shè)置為const.
對于常量聲明使用const來修飾(prefer_const_declaration)
推薦使用const 而不是final 來修飾常量的聲明.
在不可變類中的初始化參數(shù)設(shè)置為const(prefer_const_literals_to_create_immutables)
使用const 作為 @immutable 類的初始化參數(shù).
使用初始化方法而不使用靜態(tài)方法來創(chuàng)建類對象(prefer_constructors_over_static_methods)
使用初始化方法來創(chuàng)建類對象.
不要使用indexof來查看是否包含(prefer_contains)
使用contains來看**List**
和 **String**
是否包含某個(gè)對象
使用=將命名參數(shù)和他的默認(rèn)值分開(prefer_equal_for_default_values)
使用 **=**
而不是:.
使用=>來表示簡單的表達(dá)是函數(shù)體(prefer_expression_function_bodies)
使用 => 來作為一個(gè)簡單的返回函數(shù)的函數(shù)體.
不修改的私有變量設(shè)置為final(prefer_final_field)
有利于編譯器優(yōu)化.
在foreach中的變量設(shè)置為final(prefer_final_in_for_each)
如果在循環(huán)體中不修改它.
盡量使用final來設(shè)置變量(prefer_final_locals)
如果不會(huì)被重新賦值,使用final.
在函數(shù)的參數(shù)變量中使用final(prefer_final_parameters)
只要函數(shù)中的參數(shù)不會(huì)在函數(shù)體中被修改.
通過遍歷來創(chuàng)建map時(shí)最好使用for(prefer_for_elements_to_map_fromIterable)
使用for循環(huán)來進(jìn)行遍歷.
如果你準(zhǔn)備對循環(huán)的每個(gè)變量使用某一個(gè)方法使用foreach(prefer_foreach)
使用 **forEach**
來對所有的元素使用方法.
使用函數(shù)聲明將函數(shù)綁定到名稱(prefer_function_declarations_over_variables)
而不是使用變量來賦值.
使用=號(hào)來作為函數(shù)的別名(prefer_generic_function_type_aliases)
而不是用直接命名.
在build方法中盡量使用ifelse而不使用三目運(yùn)算符(prefer_if_elements_to_conditional_expressions)
盡量使用ifelse.
使用??來作為判空進(jìn)行賦值操作(prefer_if_null_operators)
而不是使用if來進(jìn)行判空操作.
盡可能使用初始化來給類屬性賦值(prefer_initializing_formals)
使用初始化形式可以使得你的代碼更加簡潔.
在初始化的時(shí)候設(shè)置元素而不是用add(prefer_inlined_adds)
盡可能在初始化的時(shí)候設(shè)置所有元素.
盡量使用整數(shù)賦值而不要使用對應(yīng)的double數(shù)字賦值(prefer_int_literals)
如果整數(shù)能滿足需求就不要用double數(shù)字來賦值.
使用變量來組合字符串而不是+(prefer_interpolation_to_compose_strings)
直接在字符串中加入變量.
使用方法isempty而不是查詢它的長度(prefer_is_empty)
對于集合來說使用isempty來判斷是否無元素.
使用方法isnotempty而不是isempty取反(prefer_is_not_empty)
對于集合使用 **isNotEmpty**
.
使用is!而不是反is(prefer_is_not_operator)
使用 is! 操作符.
使用whereType按照類型過濾集合(prefer_iterable_whereType)
而不是使用where然后在遍歷的過程中對類型做檢查.
使用 mixins.
在對一個(gè)對象使用方法之前使用?判斷對象是否為空(prefer_null_aware_method_calls)
使用?.來調(diào)用方法,而不是if.
使用?.來判空(prefer_null_aware_operators)
使用?.來調(diào)用方法,而不是if.
使用擴(kuò)展運(yùn)算符...來擴(kuò)展集合(prefer_spread_collections)
盡量使用...來將一個(gè)集合合并入另一個(gè)集合.
未在定義的時(shí)候初始化的變量應(yīng)該指明類型(prefer_typing_uninitialized_variables)
否則很容易出現(xiàn)錯(cuò)誤.
在deprecation中寫明信息(provide_deprecation_message)
通過 @Deprecated("message")來說明過期的信息.
對所有的公共的api變量輸出文檔(public_member_api_docs)
說明所有的公共變量.
不要?jiǎng)?chuàng)建遞歸的getter(recursive_getters)
這通常說明是寫錯(cuò)了.
使用sizedbox來替換container來作為空白區(qū)域(sized_box_for_whitespace)
SizedBox 比container更加輕量級.
使用///來作為注釋(slash_for_doc_comments)
使用 /// 作為文檔注釋.
在widget創(chuàng)建過程中將child屬性放在最后(sort_child_properties_last)
在widget的創(chuàng)建過程中child的屬性的賦值放在最后.
類中的構(gòu)造方法放在第一位(sort_constructors_first)
構(gòu)造方法放在其他屬性之前.
未命名的構(gòu)造方法放在第一位(sort_unnamed_constructors_first)
先是未命名的然后是命名的.
在公共的API中指定參數(shù)的類型(type_annotate_public_apis)
指定參數(shù)的類型.
初始化參數(shù)如果是類中的屬性不需要指定類型(type_init_formals)
不要設(shè)置構(gòu)造方法中的初始化屬性的類型.
在異步方法中的Future應(yīng)該使用awaited或者標(biāo)記為unawaited(unawaited_future)
否則很容易出現(xiàn)異步的錯(cuò)誤.
不要返回一個(gè)awaited的表達(dá)式(unnecessary_await_in_return)
在返回表達(dá)式中不要使用awaited關(guān)鍵字.
不要在字符串中使用不必要的大括號(hào)(unnecessary_brace_in_string_interps)
有的字符串組合沒必要用大括號(hào).
不要使用沒必要的const(unnecessary_const)
避免在一個(gè) const上下文中重復(fù)使用 const.
對于局部變量不要使用final(unnecessary_final)
使用var更短,而且也沒有改變意思.
不使用沒必要的getter和setter(unnecessary_getters_setter)
沒必要為了安全而使用getter和setter.
當(dāng)可以使用閉包是,不要使用匿名函數(shù)(unnecessary_lambdas)
閉包可以直接調(diào)用,而不需要使用復(fù)雜的匿名函數(shù).
創(chuàng)建實(shí)例不需要使用new.
不要使用沒必要的null檢測(unnecessary_null_checks (experimental))
如果可以接受非空的參數(shù).
. 如果可以接受空參數(shù),
對于初始化未非空的final變量不要定義為可空類型(unnecessary_nullable_for_final_variable_declarations (experimental))
肯定會(huì)是一個(gè)非空類型.
不要使用沒必要的overrides(unnecessary_overrides)
不要在一個(gè)只調(diào)用super方法中的override中使用overrides.
不要使用沒必要的小括號(hào)(unnecessary_parenthesis)
沒必要的小括號(hào)要被移除.
不使用沒必要的raw字符串(unnecessary_raw_strings)
沒必要的raw字符串應(yīng)該不使用.
不要使用沒必要的轉(zhuǎn)義符(unnecessary_string_escape)
刪除沒必要的轉(zhuǎn)義字符.
不要使用沒必要的this(unnecessary_this)
除非是為了防止被覆蓋.
使用8位16進(jìn)制表示顏色(use_full_hex_values_for_flutter_colors)
使用8位16進(jìn)制數(shù)表示顏色(0xFFFFFFFF) .
使用??來將null轉(zhuǎn)換為布爾值(use_if_null_to_convert_nulls_to_bools)
使用??true 或者false.
使用isEven或者isodd來判斷奇偶(use_is_even_rather_than_modulo)
而不是判斷% 2的結(jié)果.
使用late來定義非空的私有變量(use_late_for_private_fields_and_variables (experimental))
如果沒有被初始化.
使用系統(tǒng)已經(jīng)定義好的常量值(use_named_constants)
而不是自己設(shè)置一個(gè)值.
使用raw string來避免使用轉(zhuǎn)義符(use_raw_strings)
如果字符串需要轉(zhuǎn)義使用r'fsf / $'.
使用rethrow再次拋出異常(use_rethrow_when_possible)
當(dāng)在捕獲異常中有遇到異常使用rethrow.
使用setter點(diǎn)方法修改屬性而不是直接調(diào)用方法(use_setters_to_change_properties)
使用rect.width = 3 而不是rect.setWidth(3).
使用stringbuffer來組合字符串(use_string_buffers)
string buffers 更加高效.
Use throwsA matcher instead of fail().
Start the name of the method with to/_to or as/_as if applicable.
always_require_non_null_named_parameters
Specify **@required**
on named parameters without defaults.
Avoid using **as**
.
不要使用fromEnvironment和hasEnvironment(do_not_use_environment)
可能容易引起誤解.
不要給void類型的變量賦值.
應(yīng)該遵循flutter的todo樣式(flutter_style_todos)
Use Flutter TODO format: // TODO(username): message, https://URL-to-issue.
盡量將返回語句和賦值語句合并返回成一個(gè)語句返回(join_return_with_assignment)
返回語句和賦值語句合并成一個(gè)語句一起返回.
多行字符串應(yīng)該新起一行(leading_newlines_in_multiline_strings)
比較易讀.
在switch-case中不要使用default(no_default_cases (experimental))
每一個(gè)case都應(yīng)該單獨(dú)處理.
每行不超過80個(gè)字符(lines_longer_than_80_chars)
避免超過 80 個(gè)字符.
在連接字符串的時(shí)候應(yīng)該加入空格(missing_whitespace_between_adjacent_strings)
防止字符串連接過程中遺忘.
不要在toString方法使用runtimeType方法(no_runtimeType_toString)
因?yàn)?runtimeType比較耗費(fèi)時(shí)間,除非你不在乎時(shí)間和效率.
內(nèi)置類型是冪等的有些操作是多余的(noop_primitive_operations)
刪除相關(guān)的冪等操作.
prefer_bool_in_asserts (deprecated)
Prefer using a boolean as the assert condition.
推薦使用雙引號(hào)來修飾字符串(prefer_double_quotes)
Prefer double quotes where they won't require escape sequences.
Only use double quotes for strings containing single quotes.
require_trailing_commas (experimental)
Use trailing commas for all function calls and declarations.
Place the **super**
call last in a constructor initialization list.
tighten_type_of_initializing_formals
Tighten type of initializing formal.
unnecessary_null_aware_assignments
Avoid null in null-aware assignment.
unnecessary_null_in_if_null_operators
Avoid using **null**
in **if null**
operators.
use_function_type_syntax_for_parameters
Use generic function type syntax for parameters.
unnecessary_string_interpolations
Unnecessary string interpolation.
Pub Rules
依賴的庫應(yīng)該在dependcies中指定版本號(hào)(depend_on_referenced_packages)
以防止大版本號(hào)的遷移導(dǎo)致出現(xiàn)問題.
給package命名應(yīng)該使用小寫加下劃線(package_names)
package的名稱應(yīng)該遵循 **lowercase_with_underscores**
.
Sort pub dependencies.