自動再生
オートコンプリート
1つ前のレクチャー
このレクチャーを完了し次に進む
Flutter中級編2【質問対応無し版】
【本編・第1章】オープニング
001: 【重要・必ずご一読願います】この講座のスライド解説資料と受講に際してのご留意事項について
002: オープニング(本講座で作るアプリと習得できるスキルのご紹介「インスタクローンアプリ」+講座内容に不具合があることを発見された場合+講座内容にご満足頂けなかった場合の返金方法について) (11:10)
003: 【解説】現在のAndroid Studio最新版と講義動画の見え方の違いについて (5:40)
004: <資料>今回作るアプリの設計図(インスタクローン)
005: 講座内で登場するProvider.ofメソッドはすべてcontext.read/watchと置き換えて頂いて構いません(provider5.0.0以降) (4:47)
006: 今回作るアプリ(インスタクローン)の設計図を書こう (8:51)
【本編・第2章】アプリアイコン・ランチャースクリーン・カスタムフォントを設定しよう
007: Android Studioで今回作るアプリのプロジェクトを作ろう (9:54)
008: <資料>今回のアプリで使うリソース(画像・フォント)
009: 今回のアプリで使うリソースをプロジェクトに取り込もう (3:12)
010: 「flutter_launcher_icons」パッケージを使ってアプリアイコンを作ろう(アプリアイコンの作り方4ステップ) (6:43)
011: ランチャースクリーンを作ろう(Android) (7:04)
012: [macのみ]ランチャースクリーンを作ろう(iOS) (2:22)
013: カスタムフォントの設定をしよう (3:33)
014: アプリ全体に共通する部分の実装をしよう(アプリのテーマ設定(ThemeData)含む) (7:04)
【本編・第3章】ローカライゼーション(多言語設定)をしよう
015: 多言語設定用のプラグイン「Flutter Intl」を入れよう(Android Studio) (3:08)
016: 「Flutter Intl」プラグインの初期化処理をしよう(Android Studio) (2:24)
017: 「flutter_localizations」パッケージのインストールをしよう (2:04)
018: 「flutter_localizations」パッケージの初期化コードの実装をしよう (2:43)
019: <資料>次のレクチャーで使う英語・日本語の文字列リソースファイル(ARBファイル)
020: 文字列リソースファイル(Arbファイル)の設定をしよう (3:22)
020-2: 【+α】arbファイル(文字リソースファイル)を自分で作成する方法 (6:34)
021: [Macのみ]iOS端末で多言語表示のために必要な設定をしよう(Xcode) (5:20)
022: 多言語設定(ローカライゼーション)が出来ているか確認しよう (3:04)
022-2: 【+α】アプリ表示名を多言語化(ローカライズ)させる方法(Androidの場合) (10:02)
022-3: 【+α:Macのみ】アプリ表示名を多言語化(ローカライズ)させる方法(iOSの場合) (4:34)
022-4: 【+α:Macのみ】ローカライズしていない言語を選択した際になぜかデフォルト言語にならない場合の対処法 (9:35)
【本編・第4章】Firebaseを使うために必要なセットアップをしよう(Flutter2.8以降の方法)
023: 【解説】Firebaseとは (6:23)
024: 【解説】FlutterアプリへのFirebaseの設定方法5ステップ (11:05)
025: Firebaseのアカウントを開設しよう (3:18)
026: Firebaseのコマンドラインツール(Firebase CLI)をインストールしよう (7:05)
026-2: Flutterのコマンドラインツールを使うためのパスの設定をしよう(該当者のみ) (3:20)
026-3: FlutterFire CLIのインストールをしよう(自動での初期化:Dart-only Firebase Initialization) (0:56)
027: Firebaseの設定コマンドを使ってプロジェクト・アプリの登録をしよう (8:51)
027-2: 【27の方法でうまくいかなかった場合】Firebaseコンソールでプロジェクトの登録をしてからFirebaseの設定コマンドでアプリの登録をしよう (7:27)
027-3: 【解説】Firebaseにおける「プロジェクト」の考え方 (4:16)
028: 【+α】Firebaseのプロジェクトをほかの人と共有する方法(メンバーの管理方法) (2:31)
029: 「flutter_core」パッケージをインストールして初期化処理を行おう (4:13)
029-2: 今回のアプリで必要なFirebaseのパッケージをインストールしよう(FlutterFire) (2:49)
029-3: [Macのみ]Firebaseのパッケージを入れたらiOSでのビルドが異常に遅くなる場合の対処法 (4:54)
【本編・第5章】Googleログイン使った認証処理を実装しよう(Firebase Authetication / Cloud Firestore)
030: 【解説】GoogleログインとFirebaseAuthを使った認証処理の概要 (4:43)
031: Googleログインに必要なパッケージをインストールしよう(google_sign_in) (1:06)
032: FirebaseコンソールからGoogleログインを有効にしてデータベースへの書き込みルールを設定しよう (3:54)
033: AndroidからGoogleログインをするために必要なフィンガープリント(SHA-1)を取得しよう (9:26)
034: [Macのみ]iOS端末からGoogleログインするために必要な設定をしよう (9:52)
035: 【解説】Cloud Firestoreとは(SQLiteとの違いとは) (7:00)
036: 【解説】Cloud Firestoreにおけるデータモデルと扱えるデータ型とは (6:33)
037: Dartでデータクラスを作るための「Dart Data Class」プラグインをインストールしよう(Android Studio) (4:44)
038: 【解説】Dart Data Classプラグイン使用上の注意点 (5:34)
039: ログインユーザー情報を格納するデータクラスを作ろう (6:44)
040: 設計(アーキテクチャ)とDIの初期設定をしよう (5:12)
041: ログイン処理に関する設計の仕組みを作ってProviderに登録しよう (9:31)
042: 【解説】Dependency Injection(依存性の注入:DI)とは(中級編1の復習) (7:08)
043: 【解説】「FutureBuilder」とは (6:35)
043-2: 「FutureBuilder」を使ってアプリ起動時にログインしているかのチェックをしよう (10:46)
044: [Androidの場合]「Cannot fix requested classes in a single dex file」の対処法 (1:42)
044-2: 【解説】FutureBuilderは正確には非同期処理を「待ってから」Widgetを生成するわけではない (1:28)
045: 【解説】FutureBuilderとConsumerの違いとは (7:27)
046: ログイン画面(LoginScreen)の大枠を実装しよう (10:45)
047: ログイン画面からサインイン処理を外注しよう (2:08)
048: GoogleログインしたアカウントのFirebase認証処理を実装しよう (7:42)
048-2: 【解説】await部分を「()」で括ることの意味は何か (2:57)
049: 認証されたユーザーがデータベースに登録されているかの確認しよう(Cloud Firestoreの検索処理) (6:10)
050: FirebaseUserクラスをUserクラスに変換する処理を実装しよう (3:42)
051: 認証されたユーザーをデータベースに登録しよう(Cloud Firestoreの登録処理) (3:02)
052: DBに登録したユーザーデータを取得してアプリ全体で使えるようにしておこう (7:18)
053: サインインが完了したらアプリを開く処理を実装しよう (5:55)
054: Debugモードの場合はサインインをキャンセルするとアプリが止まってしまう理由 (3:03)
【本編・第6章】端末内臓のカメラアプリ・ギャラリーアプリと連携して画像を取得しよう(image_picker)
055: HomeScreenとそれに属する5画面(Page)の外枠を実装しよう (5:35)
056: 「NavigationBar(画面下部のナビゲーションメニュー)」の設定をしよう (10:32)
056-2: NavigationBarのカスタマイズをしよう(「label」の表示・非表示) (2:26)
057: 【該当者のみ】「BottomNavigationBar」から「NavigationBar」への移行方法 (4:04)
058: 投稿画面(PostPage)の実装をしよう (7:06)
059: 投稿画面(PostPage)から投稿アップロード画面(PostUploadScreen)への遷移処理を実装しよう (4:51)
060: PostViewModelの大枠を実装してProviderに登録しよう (5:20)
061: 画像を取得するためのパッケージ「image_picker」をインストールしよう (3:53)
062: [Macのみ]「image_picker」パッケージを使うために必要な権限等の設定をしよう (2:49)
063: [Androidのみ]Android11(APIレベル30)以上でカメラが使えるようにするための設定をしよう (4:12)
064: 端末内臓のカメラ・ギャラリーアプリから投稿画像を取得する処理を実装しよう (13:06)
【本編・第7章】スマホ端末の位置情報を取得しよう(geolocator)
065: 【解説】位置情報と場所の詳細情報を取得する方法4ステップ (9:07)
065-2: 位置情報取得に必要なパッケージ「geolocator/geoCoding」をインストールして必要な権限等の設定をしよう (0:52)
066: 【解説】位置情報を取得する2つの方法(Androidで2つのPermissionが必要な理由) (2:06)
067: 「geolocator」を使うために必要な権限等の設定をしよう (4:58)
067-2: APIレベル31(Android12)をターゲットとした場合に必要なマニフェストファイルの設定をしよう (3:59)
067-3: 【解説】なぜgeolocator7.7.0以降はcompileSdkVersionを31にしないとエラーになるのか (4:53)
067-4: [Macのみ]許可ダイアログの説明文書(・・discription)の多言語化設定をしよう(Info.plist) (4:58)
068: 位置情報取得を担当するモデルクラス(LocationManager)を作成しよう (3:33)
069: 位置情報を格納するクラス(Location)を作成しよう (2:52)
070: 現在の位置情報を取得する処理を設計の仕組みを使って外注しよう (3:45)
070-2: 位置情報サービスがオンになっているかを確認しパーミッションチェックの実行処理を実装しよう (6:38)
070-3: 位置情報と場所の詳細情報を取得する処理を実装しよう (10:20)
071: 現在の位置情報を取得してViewに通知する処理を実装しよう (3:26)
072: 画像と位置情報の取得を受けて投稿アップロード画面を更新しよう(PostUploadScreen:appBar部分) (4:13)
073: 画像と位置情報の取得を受けて投稿アップロード画面を更新しよう(PostUploadScreen:body部分) (4:24)
074: 投稿アップロード画面内の画像・キャプション部分の大枠を実装しよう(PostCaptionPart) (4:48)
075: <資料>次のレクチャーで使うプロジェクト
076: 【解説】「Hero」アニメーションとは (6:15)
077: 「Hero」を使って投稿画像をクリックしたら拡大表示する処理を実装しよう(EnlargedImageScreen) (7:21)
077-2: 【解説】なぜInkWellはMaterialで包まないとエラーになるのか (2:03)
078: 【解説】TextField変更の管理方法(addListenerメソッドの謎解き) (7:09)
079: 投稿キャプションを入力するパーツ(PostCaptionInputTextField)を実装しよう (5:27)
079-2:【解説】TextFieldの変更を検知するための「onChanged方式」と「addListener方式」は何が違うのか (5:50)
080: キャプション入力欄の見た目をカスタマイズしよう (2:35)
081: 位置情報を表示するパーツ(PostLocationPart)を実装しよう (10:49)
【本編・第8章】GoogleMaps(地図)と連携しよう(google_maps_flutter)
082: 【解説】FlutterアプリにGoogle Maps(地図)を表示させる方法 (7:33)
083: Maps Platformに登録しよう (1:25)
084: AndroidでGoogleMapsを使うための設定をしよう (2:04)
085: [Macのみ]iOSでGoogleMapsを使うための設定をしよう (3:34)
087: 地図画面を表示させよう(MapScreen) (10:35)
088: 地図をタップしたらマーカーを表示する処理を実装しよう (6:55)
089: 地図上で選択した地点に位置情報を更新しよう (6:12)
090: 確認ダイアログをカスタムウィジェットとして実装しよう (6:50)
091: 投稿データを格納するためのデータクラス(Post)を作ろう (3:43)
092: 「Dart Data Class」プラグインでDateTime型を扱う場合の注意点 (4:21)
092-2: 「Dart Data Class」プラグインでList型を扱う場合の注意点(Listのmapメソッドとは) (6:33)
093: 投稿処理をモデルに外注しよう(ViewからRepositoryへの外注) (7:09)
094: 一意なIDを生成してくれる「uuid」パッケージをインストールしよう (3:15)
095: Firebase Storageを使うための初期設定をしよう (1:42)
095-2: 【解説】Firebaseのセキュリティルールとは (8:51)
096: 投稿画像をStorageにアップロードして保存先のURLを取得しよう (6:34)
097: 投稿データをデータベース(Cloud Firestore)に登録しよう (5:02)
098: ユーザーが投稿を途中でキャンセルした場合の処理を実装しよう(PostUploadScreen) (2:42)
【本編・第9章】投稿データをフィード画面に表示させよう
099: フィード画面からカメラを起動する処理を実装しよう(FeedPage) (7:41)
100: フィード画面を開いた際に投稿一覧を取得する処理を外注しよう(FeedSubPage) (8:41)
101: データベース(CloudFireStore)に投稿データがあるかどうかをチェックしよう(DatabaseManager) (5:47)
102: 自分がフォローしているユーザーのIDをデータベースから取得しよう(DatabaseManager) (5:26)
103: 自分と自分がフォローしているユーザーの投稿をデータベースから取得しよう(DatabaseManager) (6:51)
104: 複雑な検索条件に対応できるカスタムインデックスを設定しよう(Cloud Firestoreの複合インデックスとは) (9:29)
104-2A: 【複合インデックスのワナ】自分がフォローしているユーザーが10人を超える場合の対策(①:whereIn句の制限とコスト削減策の考え方) (6:32)
104-2B: 【複合インデックスのワナ】自分がフォローしているユーザーが10人を超える場合の対策(②:10人を一塊としたサブリストの作成(List.subList())) (9:32)
104-2C: 【複合インデックスのワナ】自分がフォローしているユーザーが10人を超える場合の対策(③:サブリストをループさせてDBにアクセス) (5:28)
105: 投稿取得処理を受けたフィード画面の大枠の更新処理を実装しよう(FeedSubPage) (6:05)
106: 個別投稿表示パーツ(FeedPostTile)の大枠を実装しよう (7:19)
107: 個別投稿表示パーツで使う投稿ユーザーの取得処理を実装しよう (8:10)
108: 「cached_network_image」と「CircleAvater」を使って円形画像を表示させるWidgetを作ろう (6:23)
109: ユーザー情報を表示させるカスタムWidgetを作ろう (5:17)
110: 個別投稿表示パーツのヘッダー部分の大枠を実装しよう(FeedPostHeaderPart) (3:47)
111: 「PopupMenuButton」を使って投稿画像のカスタム処理部分の大枠を実装しよう (6:30)
112: 個別投稿表示パーツの投稿画像表示部分を実装しよう(ImgeFromUrl) (3:28)
113: 個別投稿表示パーツのいいね・コメントアイコン部分の大枠を実装しよう(PostLikesPart) (3:48)
114: 個別投稿表示パーツのキャプション・コメント表示部分の大枠を実装しよう(PostCommentsPart) (4:06)
115: 「RichText」を使ってキャプション表示部分を実装しよう (7:00)
116: 「GestureDetector」を使って枠からはみ出したキャプションを表示させる実装をしよう (1:47)
117: 「timeago」パッケージを使って投稿日時のタイムスタンプを表示する処理を実装しよう (6:21)
117-2: 世界中どこにいても投稿日時を正しい現地時間で取得できるように修正しよう(DateTime.toUtc / toLocal) (7:39)
【本編・第10章】投稿データの編集とシェアをしよう
118: 投稿編集画面の大枠を実装しよう(FeedPostEditScreen) (6:43)
119: 投稿編集画面の投稿画像・キャプション部分を実装しよう(PostCaptionPart) (6:48)
120: 投稿キャプションの更新をViewModelに反映させる処理を実装しよう (3:27)
121: 投稿の編集処理を設計の仕組みを使って外注しよう (5:08)
122: データベースに登録されている投稿データを更新しよう(Cloud Firestoreの更新処理) (3:42)
123: 投稿の編集処理を受けた編集画面の更新処理を実装しよう(FeedPostEditScreen) (4:06)
124: 「share」パッケージを使って投稿をシェアする実装をしよう (4:00)
【本編・第11章】コメント・いいね部分の実装をしよう
125: コメント入力画面の大枠を実装しよう(CommentScreen) (4:41)
126: CommentViewModelを作成してProviderに登録しよう (1:59)
127: コメント入力画面のキャプション表示部分を実装しよう(CommentDisplayPart) (7:35)
128: コメント入力画面のコメント入力欄を実装しよう(CommentInputPart) (7:20)
129: コメント入力画面のコメント入力欄のカスタマイズをしよう(CommentInputPart) (5:03)
130: コメントデータを格納するためのデータクラス(Comment)を作ろう (3:17)
131: コメントの投稿処理を実装しよう (6:56)
132: データベースに登録されているコメントデータを取得しよう (8:39)
133: コメント入力画面を開いたら投稿されたコメントを表示する処理を実装しよう(CommentsScreen) (4:49)
134: コメント入力画面を開いたらコメントを投稿したユーザー情報を表示する処理を実装しよう(CommentsScreen) (5:29)
135: 「GestureLongPressCallback」を使ってコメントを長押ししたら削除する処理を設計の仕組みを使って外注しよう (5:08)
136: データベースに登録されているコメントデータを削除しよう(Cloud Firestoreの削除処理) (2:14)
137: 投稿表示画面でコメント数を表示する部分の実装をしよう (7:59)
138: 「いいね」を格納するためのデータクラス(Like)を作ろう (5:07)
139: 「いいね」をする処理を実装しよう (5:19)
140: 「いいね」されたデータをデータベースから取得する処理を実装しよう (6:59)
141: 自分がその投稿にいいねしたかどうかを判定していいね数を表示する処理を実装しよう(forループを途中で抜ける方法) (9:45)
142: 「いいね」アイコンの描画分けの処理を実装しよう (2:19)
143: 「いいね」をやめる処理を実装しよう (6:23)
144: 「RefreshIndicator」を使って上スワイプでフィード画面を更新する処理を実装しよう (5:22)
145: 投稿の削除処理を設計の仕組みを使って外注しよう (5:47)
146: データベースに登録されている投稿データを削除しよう (5:22)
【本編・第12章】プロフィール画面の実装をしよう
147: プロフィール画面とProfileViewModelの大枠を実装しよう(ProfileScreen/ProfilePage) (5:48)
148: プロフィール画面に表示するユーザーを設定しよう (5:25)
149: プロフィール画面に表示するユーザーの投稿データを取得しよう (7:58)
150: 【解説】SliverAppBarとは (5:46)
151: 「SliverAppBar」を使ってスワイプで伸縮するAppBarを実装しよう(ProfilePage) (4:50)
152: プロフィール画面の設定パーツの実装をしよう(ProfileSettingsPart) (5:42)
153: サインアウト処理を設計の仕組みを使って外注しよう (4:07)
154: サインアウト処理を実装しよう(ProfileSettingsPart) (5:53)
155: プロフィール画面のプロフィール詳細パーツの実装をしよう(ProfileDetailPart) (6:46)
156: プロフィール詳細パーツ内のプロフィール画像パーツを実装しよう(ProfileImage) (1:56)
157: プロフィール詳細パーツ内の記録表示パーツの大枠を実装しよう(ProfileRecords) (5:25)
158: 「FutureBuilder」を使って記録情報パーツで表示する投稿数を取得しよう (4:25)
159: 「FutureBuilder」を使って記録情報パーツで表示するフォロワー数を取得しよう (5:22)
160: 「FutureBuilder」を使って記録情報パーツで表示するフォロー中している人の数を取得しよう (2:33)
161: プロフィール詳細パーツ内のバイオ表示パーツの大枠を実装しよう(ProfileBio) (7:01)
162: 【解説】SliverGridとは (3:02)
163: 「SliverGrid」を使ってプロフィール画面の投稿グリッドパーツの実装をしよう(ProfilePostsGridPart) (4:41)
164: プロフィール画面からフィード画面を開く処理を実装しよう (10:04)
165: 「scrollable_positioned_list」パッケージを使ってプロフィール画面からフィード画面を開く処理を実装しよう (3:51)
166: プロフィール編集画面(EditProfileScreen)の大枠を実装しよう (10:35)
167: プロフィール画像の変更処理を実装しよう (3:50)
168: プロフィール編集処理を設計の仕組みを使って外注しよう (4:47)
169: プロフィール編集処理を実装しよう (4:18)
170: プロフィール更新後にユーザーデータをデータベースから再取得しよう (5:41)
【本編・第13章】ユーザー検索画面の実装をしよう
171: 【解説】SearchDelegateとは (5:40)
172: ユーザー検索画面(SearchPage)の大枠を実装しよう (5:09)
173: 「SearchDelegate」を使って検索パーツ(SearchUserDelegate)の大枠を実装しよう (8:49)
174: 検索欄に入力したらユーザー検索を行う処理を設計の仕組みを使って外注しよう (4:05)
175: 「startAt・endAt」を使って検索欄に入力したユーザーデータをワイルドカード的にデータベースから取得する処理を実装しよう (8:30)
176: ユーザー検索処理の結果を受けてユーザー検索画面の更新処理を実装しよう (5:47)
177: ユーザー検索画面からの遷移を受けたプロフィール画面の更新処理を実装しよう (4:12)
178: ユーザーをフォローする処理を実装しよう (8:03)
179: プロフィール画面遷移時にフォロー状況をチェックする処理を実装しよう (6:09)
180: ユーザーをアンフォローする処理を実装しよう (5:15)
【本編・第14章】フォロー・フォロワー・いいねしてくれた人を表示する画面の実装をしよう
181: WhoCaresMeScreenとWhoCaresMeViewModelの大枠を実装しよう (3:32)
182: WhoCaresMeScreenを開く処理を実装しよう(①:誰がいいねしたか) (5:30)
183: WhoCaresMeScreenを開く処理を実装しよう(②誰にフォローされたか・誰をフォローしているか) (3:53)
184: WhoCaresMeScreenからデータを取得する処理を設計の仕組みを使って外注しよう (3:28)
185: 投稿に「いいね」したユーザーの情報を取得しよう (5:11)
186: 非同期処理でforEach関数を使う場合の注意点(Future.forEachメソッド) (3:39)
187: フォロワーユーザーの情報をデータベースから取得しよう (4:20)
188: フォローしているユーザーの情報をデータベースから取得しよう (2:52)
189: ユーザー情報の取得を受けてWhoCaresMeScreenの更新処理を実装しよう (6:30)
190-A: 【+α】他ユーザーのプロフィールを開いた際に正しく戻れるようにするための修正(①:開く元のユーザーを管理するためのスタックの考え方) (6:59)
190-B: 【+α】他ユーザーのプロフィールを開いた際に正しく戻れるようにするための修正(②:プロフィール画面を開いた際に開く元ユーザーの設定) (9:48)
190-C: 【+α】他ユーザーのプロフィールを開いた際に正しく戻れるようにするための修正(③:プロフィール画面を閉じた際の再描画①) (4:52)
190-D: 【+α】他ユーザーのプロフィールを開いた際に正しく戻れるようにするための修正(④:プロフィール画面を閉じた際の再描画②) (2:45)
【本編・第15章】テーマの動的変更(ダークテーマとライトテーマの動的入替)の実装をしよう
191: 【解説】Providerを使ったテーマの動的変更のやり方 (5:20)
192: テーマ(ThemeData)の設定をしよう (9:10)
193: テーマの動的変更に伴う設計の仕組みを構築しよう (3:18)
194: プロフィール画面からテーマの設定処理を設計の仕組みを使って外注しよう (4:33)
195: 【解説】SharedPreferencesとは (3:58)
196: 「shared_preferences」パッケージを使って変更したテーマを永続化する処理を実装しよう (3:15)
197: テーマ変更処理を受けて画面の見た目を更新しよう (4:24)
198: アプリ起動時にSharedPreferencesに保存したテーマをセットする処理を実装しよう (5:21)
199: main関数内で非同期処理を行う場合の注意点 (2:03)
200: <資料>今回のアプリの完成プロジェクト(だいたインスタグラム)
【本編・第16章】エンディング
201: エンディングメッセージ (4:30)
202: 受講生特典のご案内(講座割引クーポン)
【重要・補足】講座リリース後に行われたFirebaseのパッケージ群の破壊的変更に伴う対応について
「firebase_core」0.5.0以降に必要となる初期化処理(main.dart) (5:49)
「firebase_auth」0.18.0での破壊的変更に伴う対応(user_repository.dart) (4:14)
「cloud_firestore」0.14.0での破壊的変更に伴う対応(database_manager.dart) (5:37)
【補足セクション①】Flutter小ネタ集
provider4.1.0から使えるようになった「Context.read / watch」と「Provider.of」について (9:19)
ListViewの最下部からスクロールアップしたらリストの先頭まで戻ってしまう場合の対処法(AutomaticKeepAliveClientMixinの使い方) (6:27)
【補足セクション④】FirebaseをFlutterで使うための従来の手動による初期化方法(Flutter2.8にできない場合)
Firebaseのアカウントを開設しよう (3:44)
Firebaseコンソール内に新しいプロジェクトを作成しよう (6:27)
Firebaseプロジェクト内にAndroidアプリの登録をしよう(従来方式) (7:23)
[Macのみ]Firebaseプロジェクト内にiOSアプリの登録をしよう(従来方式) (3:19)
今回のアプリで必要なFirebaseのパッケージをインストールしよう(FlutterFire:従来方式) (7:20)
Firebaseのパッケージ群(FlutterFire)をFlutterで使うための初期化処理を行おう(従来方式) (2:15)
Teach online with
034: [Macのみ]iOS端末からGoogleログインするために必要な設定をしよう
このレクチャーはご覧になれません。
既に登録済の場合は
ログインが必要になります。
.
コースに登録する