$30 off During Our Annual Pro Sale. View Details »

Writing better Flutter Code
with Flutter Lint / Part2

Writing better Flutter Code
with Flutter Lint / Part2

#flutter
#flutterjp
#flutterdev
##shibuya_apk

Kenichi Kambara

April 21, 2023
Tweet

More Decks by Kenichi Kambara

Other Decks in Technology

Transcript

  1. 2023.04.21


    ਆݪ ݈Ұ (@korodroid)
    Writing better Flutter Code

    with Flutter Lint / Part2
    shibuya.apk #41

    View Slide

  2. ࣗݾ঺հ
    •ۀ຿ɿϞόΠϧΞϓϦ։ൃ/ٕज़ࢧԉ/จԽৢ੒׆ಈ


    •ߨԋɿΠϕϯτొஃ(ւ֎14ճɺࠃ಺100ճ+)


    •ࣥචɿ7࡭


    •झຯɿϥϯχϯά/ӳձ࿩/ΞϓϦ։ൃ
    ਆݪ ݈Ұ (NTTςΫϊΫϩε/ΤόϯδΣϦετ)
    @korodroid

    View Slide

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

    View Slide

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

    View Slide

  5. Part1ͷ͓͞Β͍

    View Slide


  6. Lintπʔϧ(੩తղੳ)Λ׆༻͢ΔϝϦοτྫ
    1. જࡏతͳόάͷݕग़


    2. ϨϏϡʔ࡞ۀͷෛՙܰݮ


    3. ΞϓϦͷύϑΥʔϚϯεվળ

    View Slide


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

    View Slide


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

    View Slide


  9. 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

    View Slide


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

    View Slide


  11. Example: “avoid_print”

    View Slide

  12. ͔͜͜ΒPart2

    View Slide


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

    View Slide


  14. 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

    View Slide


  15. 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”

    View Slide


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

    View Slide


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

    View Slide


  18. Example1
    analyzer:


    errors:


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

    View Slide


  19. Example2
    linter:


    rules:


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

    View Slide


  20. Example3
    analyzer:


    exclude:


    - “**/*.g.dart"


    - "**/*.freezed.dart"


    - test/*.dart
    ྫ.ର৅ύεͷϑΝΠϧΛνΣοΫର৅֎΁

    View Slide

  21. ·ͱΊ
    •ެࣜϦϑΝϨϯεͷϓϥΫςΟεΛࢀߟʹʂ


    •Linter for Dart͸ɺݴޠֶशͷಡΈ෺ͱͯ͠΋͓͢͢Ίʂ


    •ඞཁʹԠͯ͡ɺϧʔϧΛదٓΧελϚΠζ

    View Slide


  22. 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

    View Slide