Skip to content

Posts

Firestoreでサブコレクションを使う理由

親コレクションと子コレクションがあったとして、子を親のサブコレクションにするか、子に親のIDを持たせて別のコレクションにするか問題。

別のコレクションにした場合、クエリ時にwhereを使って親IDを指定して絞り込むと、orderByが使えない。 エラーにならないけど、ゼロマッチになってしまう。

orderByを使いたかったので、サブコレクションを使うことにした。

Read more

Flutterのディレクトリ構成

lib直下にmainとstateと画面ごとのファイルをおいているけど、ProviderやらRiverpodの参考に見てるページはmainに全部書いていて、ページごとに分割した書き方がいまいちわからない。

状態管理も考慮したファイル構成はどうなのかなとググったら、repositoryやらserviceやら出てきて、そこまで凝ったことしなくても良いんだけどな、、という気持ちになった。

Read more

Amazon IVS入門

YouTubeみたいな動画配信とチャットできるサイト作るのに良さそうなサービスないかな、と思って探したのがAmazon Interactive Video Service

動画の配信はOBSを使って簡単にできそう。

S3に自動的に保存することもできるようなので、後から視聴することもできそう。

チャットのサンプルも用意されていた。

Read more

アップロードしたファイルを表示する

ファイルを選択してFirebase Storageにアップロードする処理は昨日できた。

フォーム画面で選択したファイルを、アップロードする前にプレビュー表示をしたい。

画像の表示はImage class - widgets library - Dart APIを使えばできる、のだけれど、画面を表示したタイミングではまだ画像が選択されていないので何も表示できない。

画像を選択したら描画されるようにしたい。

Read more

Flutterでファイルアップロード

画像を選択してアップロードする機能を付けたい。

アップロード先はFirebase Storageで。

Flutter×Firebase(CloudStorage)でファイルダウンロードとアップロードを簡単に実現する方法 - Qiita

を見て実装してみたところ、Unsupported operation: Platform._operatingSystemなエラーが。

Webだと対応していない書き方なのかな・・環境ごとに分けるの面倒だな・・

google cloud functions - Flutter web - Upload Image File to Firebase Storage - Stack Overflow

Read more

Flutterのrouter選定

画面レイアウトの調整が面倒な件、ロジックを作り始めると、目的の画面にたどり着くまでに手数が必要になるせいだと気づいた。

ということで、目的の画面に直接アクセスできるように(Webアプリ版なので)URL指定で開けるようにする。

そのためにはrouterを使うのが良さそう。

軽く検索したところ、以下のパッケージがヒットした。

Read more

FlutterのDropdownを使う

DropdownButton class - material library - Dart APIのサンプルを持ってきて、サンプルではchildとvalueを同じ文字列にしてるのを別々に指定できるようにして、とりあえずループ使わないで配列直接指定にしてみたら、エラー。

Assertion failed:
file:///home/umemak/sdk/flutter/packages/flutter/lib/src/material/dropdown.dart:882:15
items == null || items.isEmpty || value == null ||
              items.where((DropdownMenuItem<T> item) {
                return item.value == value;
              }).length == 1
"There should be exactly one item with [DropdownButton]'s value: One. \nEither zero or 2 or more
[DropdownMenuItem]s were detected with the same value"

dropdownValueの初期値をサンプルからコピーしたまま直してなかった。。

Read more