flutter webで簡単なアプリ開発したときのメモ
開発環境は以下の通りで特につまるところはなかった
flutter doctorしたらandroid sdkがないとか、VisualStudioのC++がないとか言われたけど今回はweb向けを開発したいだけなので無視した
今回作りたいのは簡単なチェックボックス付きのTODOリストなのでチェックボックスの状態をローカルストレージに保存したい。
これをつかえば保存できそう。URLに#がつく問題はpubspec.yamlに
dependencies:
flutter_web_plugins:
sdk: flutter
を追加してmainに
setUrlStrategy(PathUrlStrategy());
を追加する
ReorderableListViewで並び替えできるウィジェットが作れる。
その中にCheckboxListTileのリストを入れると並び替えのできるチェックボックス付きのリストが作れる
jsonを書いたらその通りのクラスを作ってくれる。神
Do not use BuildContexts across async gaps.
の警告の解決方法がわからない。
言ってることの意味はなんとなくわかるし
if (!mounted) return;
で解消できるのもわかるけど、statelesswidgetなのでmountedが使えない。
statelesswidgetでBuildContextsを使おうとすること自体が間違っている?
freezedの使い方
import 'package:freezed_annotation/freezed_annotation.dart';
part 'ファイル名.freezed.dart';
コマンド
flutter pub run build_runner build
Tabbarでタブが切り替わったタイミングで処理を走らせたい場合はonTapで処理を書ける。タブのインデックスも引数で取れる。
Scaffold(
appBar: AppBar(
title: const Text('title'),
bottom: TabBar(
tabs: _tab,
onTap: (tabIndex) {
/// ここに処理を書ける
},
),
),
/// 以下略
これ、スワイプでタブ切り替えたときはここの処理に走らないので注意
ulidを使えるライブラリ
freezedでfromJsonを生成したらListのところの処理で
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_cards);
となっていてうまく生成できていなかった。
hooksには自動でTabControllerを作ってくれるuseTabControllerというのがある。
Tabbarについていろいろ書いてる
iPhoneでダイアログのonPressedからダイアログを消そうとするとなんか、画面が一つ戻って真っ白になる
AlertDialog内のTextFormFieldに以下の設定をしていると再現した。片方を消すと再現しない。理由はいまいちわからない
autofocus: true,
focusNode: focusNode,