Skip to content

Latest commit

 

History

History
206 lines (156 loc) · 6 KB

flutter_memo.md

File metadata and controls

206 lines (156 loc) · 6 KB

Flutter メモまとめ

Flutterの勉強参考

Zenn本

Webサイト


Dart基礎

コンストラクタ

  • {...}をつけると、名前付き引数になる
class PixabayImage {
  final String webformatURL;
  final String previewURL;
  final int likes;

  PixabayImage({
    required this.webformatURL,
    required this.previewURL,
    required this.likes,
  });
}

factory

  • factoryで、独自のファクトリーメソッドが作成可能
factory PixabayImage.fromMap(Map<String, dynamic> map) {
  return PixabayImage(
    webformatURL: map['webformatURL'],
    previewURL: map['previewURL'],
    likes: map['likes'],
  );
}

final

  • finalをつけて初期値を与えれば、型を省略できる

Firebase関連

導入

Firebase Auth

  • ID, Pass なら firebase_auth のみでOK
  • Google Signin でログインするなら google_sign_in も使う
  • Android はフィンガープリントを用意
  • iOS は Info.plist にスキームの戻り設定を追加する???
    • それだけだと、キャンセル時にクラッシュする様子

Firestoreの操作

モデルクラス

  • snapshot ←→ モデルクラス
  • 変換のための関数を用意しておくと良い

withConverter

  • withConverterを使ってCollectionReferenceを作成しておくと便利.
final postsReference =
    FirebaseFirestore.instance.collection('posts').withConverter(
  fromFirestore: (snapshot, _) {
    return Post.fromFirestore(snapshot);
  },
  toFirestore: (value, _) {
    return value.toMap();
  },
);

データの追加

await FirebaseFirestore.instance
    .collection('posts')
    .add({
      'text': ........,
      'email': .......,
      'date': ........,
    });

データの取得

FutureBuilder<QuerySnapshot>(
    future: FirebaseFirestore.instance
        .collection('posts')
        .orderBy('date')
        .get(),
    builder: (context, snapshot) {
      if (snapshot.hasData) {
        final List<DocumentSnapshot> documents = snapshot.data!.docs;
        // 以下省略.
      }
    },
)

データの取得(リアルタイム)


さまざまなUI

NavigationRail サイドナビ

Expanded と Flexible

ClipPath で描画

CustomPaint で描画