Emacs lsp-dart で fvm を使う

重い腰を上げて fvm をしっかり使うようにしました. ちなみに似たような雰囲気のある issue があり,snap で Dart をインストールした場合に sdk-dir を認識できていないような感じです.

That’s how I create flutter launcher icon

ランチャーアイコンを作ってくれる flutter_launcher_icons はとても便利です. Android の Adaptive Icon を SVG でやりたい場合は不十分です(雑に見てみた感じ png しか指定できないようでした). ということでこんな感じでやると良さそうというのをメモ.

Flutter web で oidc authentication する

Flutter web で OpenID Connect やってたメモ. 以下を参考にしました. openid_client | Dart package Library for working with OpenID Connect and implementing clients. pub.dev まずは認証ページを出すところまで. Flutter web は SPA なので Client Secret は渡せるようになっていますが渡しません.

GitHub Actions で Flutter Android Release Build する

workflow.yml ほんと単純で keystore を用意して,いわゆる local.properties を作成して build しているだけですね. flavor も考えるとつらいですが自分のケースの場合は — dart-define=<foo=bar> で済むケースがほとんどです.

Flutter で Android の Fragment Transaction 的な

親の顔より見たアレを Flutter でやります. override fun onCreate(savedInstanceState: Bundle?) { val fragment = MainFragment.newInstance() supportFragmentManager.beginTransaction() .replace(R.id.content, fragment) .addToBackStack(null).commit() supportFragmentManager.addOnBackStackChangedListener { if (supportFragmentManager.backStackEntryCount > 0) { supportActionBar?.setDisplayHomeAsUpEnabled(true) } else { supportActionBar?.setDisplayHomeAsUpEnabled(false) } } state_notifier を使ってやっていきます. 切り替える Fragment 相当の View の種類の Enum enum ViewType { Main, Sub, } StateNotifier を用意します. @freezed abstract class AppViewState with _$AppViewState { const factory AppViewState({ @Default(ViewType.Main) viewType, }) = _AppViewState; } class AppViewStateNotifier extends StateNotifier<AppViewState> { AppViewStateNotifier() : super(const AppViewState()) {} void setViewType(ViewType viewType) { state = state.copyWith(viewType: viewType); } } 以下が Fragament 相当の View を持つ View です. WillPopScope は Activity でいう onBackPressed を実現する View だと思ってください. onWillPop で現在の View が Sub だった場合 MainView に切り替えするようにします. AppBar#leading でも View が Sub だったときは back_arrow をセットするようにして setDisplayHomeAsUpEnabled(true) 相当になるようにします. 今回は View が 2 つなのでこんな感じですが,View が 3 つとかの場合は Map とかにしてよしなにするだけですね.

Flutter web で GitHub Container Registry を試す

GitHub Container Registry が GA したみたいなので使ってみます. ついでなので Flutter web で. 普通に docker push するのは普通過ぎるので actions でやります. サンプルレポジトリは下記です. GitHub - yuzumone/flutter-web-docker-sample Contribute to yuzumone/flutter-web-docker-sample development by creating an account on GitHub. github.com

Flutter web でレスポンシブ対応

Flutter web でレスポンシブ対応したときのメモ. responsive_builder を使うとめっちゃ簡単. responsive_builder | Flutter package A set of widgets that can be used to define a readable responsive UI for widgets. pub.dev 以下のようにデバイスに応じて Widget を返すようにするだけ.

sembast を試す

Flutter でモバイルだけでなくデスクトップや Web などマルチプラットフォームに対応している NoSQL データベースライブラリ sembast を使ってみたのでメモ. sembast | Dart package NoSQL persistent embedded file system document-based database for Dart VM and Flutter with … pub.dev