Flitter로 하지 않는 게 좋을 것 같아요.

8655 단어 FlutterDarttech
2021.1.7
자신에 대한 훈계로

프로그램 코드를widget에 섞기


선언된 코드로build () 를 간결하게 씁니다.수속문이 뒤섞이면 정말 이해할 수 없다.인상으로,build ()에서 XML 같은 리듬으로widget을 삽입합니다.
x의 예, 수속적으로 쓴 상황
Widget build(context) {
  final children = <Widget>[
    Text("the condition is..")
  ];
  bool condition = false;
  if (_hoge != null) {
    condition = true;
  }
  if (condition) {
    children.add(Text("yes"));
  }
  return Column(children: children);
}
선언적으로 쓰다
Widget build(context) {
  bool condition = (_hoge != null);
  return Column(children: [
    Text("the condition is.."),
    if (condition)
      Text("yes")
  ]);
}

Atomic Design을 통한 과도한 분할


재활용의 희망이 없으면 갈라놓지 않는다.페이지와 Template를 최소한으로 분리하면 됩니다.
페이지/template의 역할 분담 예시
class SomePage extends StatelessWidget {
  Widget build(BuildContext context) {
    return Scaffold(body: SafeArea(child: SomeTemplate(
      onTap: () { print("tapped"); },
      btnLabelStr: "ボタン",
     )));
  }
}

class SomeTemplate extends StatelessWidget {
  final Function onTap;
  final String btnLabelStr;
  SomeTemplate({this.onTap, this.btnLabelStr});
  
  Widget build(BuildContext context) {
    return Container(
      child: RaisedButton(child: Text(btnLabelStr), onPressed: onTap)
    );
  }
}
구성 요소가 많아 Fat template가 되면 template 내에서 분할됩니다.다른 용도는 없으면서도 organism/molecule 등으로 분리되지 않는다.
some_template.dart
some_template_part_header.dart
some_template_part_footer.dart

Provider


특수한 상황이 없으면 riverpod를 사용합니다.Provider가 시들었다는 이유로 riverpod를 피할 수 없습니다.Provider Widget 주입으로 Consummer와 Selector를 구분하지 못해 식별이 어려워졌다.hook 판단 보류.rxdart,bloc 통과(redux 공포증).

상속, 인터페이스 사용하지 않음


유형 상속(StatenessWidget 또는 ChangeNotifier 등) 이외에는 사용하지 마십시오.믹스로.전역 함수를 연구하다.최후의 마지막 수단으로 계승하여 인터페이스를 탐구하다.특히 위젯의 승계는 절대 NG다.선언의 코드는 Atomic Design과 일치하지 않습니다.

후기


모든 일을 통해 한 가지 이야기를 했다.Widget을 설명하고 파일의 코드만 보고 내용을 파악할 수 있도록 노력합니다.그리고 formatter는 필수입니다.

좋은 웹페이지 즐겨찾기