Iganinのブログ

日頃の開発で学んだ知見を中心に記事を書いています。

Flutter

【Flutter】RiverpodのProviderの変化を検知する

TL;DR; ProviderObserverを使用し,ProviderScopeのobservers引数に設定する 環境 [✓] Flutter (Channel stable, 2.2.3, on macOS 11.3.1 20E241 darwin-x64, locale ja-JP) [✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [✓] And…

【Flutter】FlutterのDartコードの難読化について

TL;DR; Dartコードの難読化には buildOptionとして --obfuscate --split-debug-info をつける 難読化について 難読化はクラス名やメソッド名を変更し、バイナリサイズを落とすことを主な目的としているらしい。 例えば、 SpecialCatクラスをaに置き換えると…

【Flutter】ScrollViewとExpandedを併用してSignIn / SignUp画面 などのレイアウトを作成する方法

TL;DR; LayoutBuiderとIntrinsicHeightを併用する 環境 [✓] Flutter (Channel stable, 2.2.3, on macOS 11.3.1 20E241 darwin-x64, locale ja-JP) [✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [✓] Android Studio (version 202…

【Flutter】GraphQLClientでキャッシュの永続化を行う(DIにRiverpodを使用)

TL;DR; HiveStoreを使う HiveStoreの初期化は非同期処理のためgraphqlのproviderがFutureとなってしまいめんどくさい 上記解消のために main.dart で 初期化を終わらせ ProviderScopeでoverrideする 環境 [✓] Flutter (Channel stable, 2.2.3, on macOS 11.3…

【Flutter】RiverpodのProviderのキャッシュをLogout時に効率的に削除する

TL;DR; logout時に値を変更するProviderを作成して、各Providerの初期化処理でそのProviderをwatchする 環境 [✓] Flutter (Channel stable, 2.2.3, on macOS 11.3.1 20E241 darwin-x64, locale ja-JP) [✓] Xcode - develop for iOS and macOS [✓] Chrome - d…

【Flutter】Navigation2.0とAutoRouteライブラリを使用して、画面遷移時に認証状態を確認する

tl;dr; 画面遷移時の認証状態をAutoRouteライブラリのAutoRouteGuardを使って確認する 認証していない場合は認証画面に遷移させるなどもできる riverpodでDIしている場合でも対応できる 書くこと auto_route + riverpodでの画面遷移時の認証状態確認方法 書…

【Flutter】webview_flutterで独自WebViewerを作る

webview_flutterはアプリ内で独自のWebView表示をしたい場合にまず第一候補として上がってくるライブラリかと思います。 本稿では、webview_flutterとhooks_riverpodを使用し、アプリ内に独自のWebViewerをMVVMの形で作成する方法を記載します。 下記環境を…

【Flutter】graphql_flutterでの認証処理について

graphql_flutterは【Flutter】graphql_flutterのクライアントにTimeoutを設定するにて記載した通り、 Flutterでgraphqlを扱う際には第一候補として使用を検討するライブラリかと思います。 本稿では、graphql_flutterを使用した認証処理について記載します。…

【Flutter】graphql_flutterのクライアントにTimeoutを設定する

graphql_flutterはgrahQLの有名なライブラリーであるApolloにインスパイアされたflutterのgraphql clientライブラリです。 FlutterでgraphQLを使用する場合はgraphql_flutterを使用するかgraphqlを使用することになるかと思います。 ネットワーク通信を行う…

【Flutter】AWS SNSからFlutterで作成したAndroidアプリにPush通知を送った際に「Unable to handle incoming background message.」が発生した際の解決方法

FlutterでPush通知を実装する場合、firebase_messagingライブラリを使用するかと思います。 私も使用していたのですが、AWS SNSと組み合わせたところ、バックグラウンドでPush通知を受け取ることができませんでした。 AndroidのPush通知に不慣れなこともあり…

FlutterでローカルDBを扱う方法

はじめに FlutterでローカルDBを扱う方法について、 sqflite を使用したsqliteデータベースを扱うやり方を記載します。 環境設定 以下の環境を使用しています。 flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (C…