Slide 1

Slide 1 text

2023.04.21 ਆݪ ݈Ұ (@korodroid) Writing better Flutter Code 
 with Flutter Lint / Part2 shibuya.apk #41

Slide 2

Slide 2 text

ࣗݾ঺հ •ۀ຿ɿϞόΠϧΞϓϦ։ൃ/ٕज़ࢧԉ/จԽৢ੒׆ಈ •ߨԋɿΠϕϯτొஃ(ւ֎14ճɺࠃ಺100ճ+) •ࣥචɿ7࡭ •झຯɿϥϯχϯά/ӳձ࿩/ΞϓϦ։ൃ ਆݪ ݈Ұ (NTTςΫϊΫϩε/ΤόϯδΣϦετ) @korodroid

Slide 3

Slide 3 text

ॳΊͯͷshibuya.apkొஃ(8೥લ…)

Slide 4

Slide 4 text

About my Flutter product (Private works) Sekaiphone Pro(Flutter/Kotlin/Swift) MyToDo(Flutter)

Slide 5

Slide 5 text

Part1ͷ͓͞Β͍

Slide 6

Slide 6 text

Lintπʔϧ(੩తղੳ)Λ׆༻͢ΔϝϦοτྫ 1. જࡏతͳόάͷݕग़ 2. ϨϏϡʔ࡞ۀͷෛՙܰݮ 3. ΞϓϦͷύϑΥʔϚϯεվળ 


Slide 7

Slide 7 text

Flutter޲͚Lintπʔϧ( fl utter_lints) https://pub.dev/packages/ fl utter_lints

Slide 8

Slide 8 text

Walking through “ fl utter_lints” ↑ඞཁʹԠͯ͡ɺ࠷৽൛ʹߋ৽

Slide 9

Slide 9 text

Walking through “ fl utter.yaml” # Recommended lints for Flutter apps, packages, and plugins. include: package:lints/recommended.yaml linter: rules: - avoid_print - avoid_unnecessary_containers - avoid_web_libraries_in_ fl utter - no_logic_in_create_state - prefer_const_constructors - prefer_const_constructors_in_immutables - prefer_const_declarations - prefer_const_literals_to_create_immutables - sized_box_for_whitespace - sort_child_properties_last - use_build_context_synchronously - use_full_hex_values_for_ fl utter_colors - use_key_in_widget_constructors

Slide 10

Slide 10 text

Walking through “Linter for Dart” https://dart-lang.github.io/linter/lints/ productionίʔυʹ͓͚Δprint཈੍

Slide 11

Slide 11 text

Example: “avoid_print”

Slide 12

Slide 12 text

͔͜͜ΒPart2

Slide 13

Slide 13 text

Customizing Rules https://github.com/ fl utter/samples

Slide 14

Slide 14 text

Walking through “Sample Rules” include: package: fl utter_lints/ fl utter.yaml analyzer: language: strict-casts: true strict-inference: true linter: rules: avoid_types_on_closure_parameters: true avoid_void_async: true cancel_subscriptions: true close_sinks: true directives_ordering: true package_api_docs: true package_pre fi xed_library_names: true test_types_in_equals: true throw_in_ fi nally: true unawaited_futures: true unnecessary_statements: true use_super_parameters: true include: package:analysis_defaults/ fl utter.yaml ֤sampleͷanalysis_options.yaml

Slide 15

Slide 15 text

include: package: fl utter_lints/ fl utter.yaml analyzer: language: strict-casts: true strict-inference: true linter: rules: avoid_types_on_closure_parameters: true avoid_void_async: true cancel_subscriptions: true close_sinks: true directives_ordering: true package_api_docs: true package_pre fi xed_library_names: true test_types_in_equals: true throw_in_ fi nally: true unawaited_futures: true unnecessary_statements: true use_super_parameters: true include: package:analysis_defaults/ fl utter.yaml ֤sampleͷanalysis_options.yaml Walking through “Sample Rules”

Slide 16

Slide 16 text

Customizing static analysis https://dart.dev/guides/language/analysis-options

Slide 17

Slide 17 text

Customizing Rules ↑ඞཁʹԠͯ͡ɺΧελϚΠζ

Slide 18

Slide 18 text

Example1 analyzer: errors: avoid_print: error ྫ.avoid_printҧ൓ΛΤϥʔʹ

Slide 19

Slide 19 text

Example2 linter: rules: avoid_print: false ྫ.avoid_printҧ൓ΛνΣοΫର৅֎΁

Slide 20

Slide 20 text

Example3 analyzer: exclude: - “**/*.g.dart" - "**/*.freezed.dart" - test/*.dart ྫ.ର৅ύεͷϑΝΠϧΛνΣοΫର৅֎΁

Slide 21

Slide 21 text

·ͱΊ •ެࣜϦϑΝϨϯεͷϓϥΫςΟεΛࢀߟʹʂ •Linter for Dart͸ɺݴޠֶशͷಡΈ෺ͱͯ͠΋͓͢͢Ίʂ •ඞཁʹԠͯ͡ɺϧʔϧΛదٓΧελϚΠζ

Slide 22

Slide 22 text

Please let me know if you have any requests 
 such as technical speeches, technical writings and so on. Facebook:http://fb.com/kanbara.kenichi Twitter:@korodroid LinkedIn:http://www.linkedin.com/in/korodroid Thank you so much