勉強会こんにちはEveryDaySoft代表の永田です。今回はFlutter、Dart言語で夜中の24時を00ではなく、24時に表示する方法を紹介します。デフォルトのCupertinoPickeriOSスタイルのピッカーです。番号専用のピッカーですと、開発者公開しているPackageが多かったです。Flutterから公開しているソースコードを改造するのが一番良いかなと思いました。単体のWidgetしか設定できない作りになっていました。ソースコード全体を眺めてみると、継承しているクラスが少なく、依存関係が比較的少ない構成になっていたので、丸ごとコピーして、必要箇所を修正すれば実装可能だなと軽く考えました。単純にListにして値を渡すだけでは上手くいきません。itemBuilderです。itemBuilderはListViewでも良く使用しているパラメーターですね。)itemBuilder設定を複数デリゲードしなくてはいけませんが、itemBuilderの型はスーパークラスを確認すると、この機能ですが、これを初期化、デリゲードする方法は情報がありませんでした。実施したいことはピッカーの表示情報ごとにitemBuilderに携わるListWheelChildLoopingListDelegate及びListWheelChildListDelegateをデータごとに初期化、childDelegateも初期化することです。デフォルト画像クラス宣言と同時にsuper.initState()よりも速い段階で初期化してますが、Listで初期化する方法が見当たりませんでした。this.childDelegateにする必要がありました。いうことは使用箇所でchildDelegateの型を設定する必要がありますが、そちらは後に説明します。}このブロック内は実行されます。使用側で初期化設定しているので、エクセプションにはなりません。Custom24Picker.builderは{}のブロック内は実行されません。この書き方で実行されます。childDelegate自体は一つのデータ設定で上手く機能しました。Classで実装しています。_listなどのメソッドは表示データのメソッドです。TODOと記載している箇所は設定箇所、ポイントとなるコード箇所です。childDelegateはこのように宣言しています。childDelegate;この宣言によりwidgetデータを複数デリゲートすることができました。FixedExtentScrollControllerもListで設定していることにより、どのスクロールは認識できるので、bindは共通ですが、アクションしているスクロールを認識し表示分岐に使用しています。スクロール箇所ごとに値を代入するようにしています。ポイントとなる箇所を記載しました。あと何工程かありますが、TODOと記載している箇所などを確認するとソースコードがわかる人はわかると思いますし、答えが分かれば、影響範囲の少ない簡単なソースコードです。貴重なお時間お読みくださいまして、誠にありがとうございます。勉強会Custom_Picker_FlutterFlutter+Unityこの記事を書いた人dbank記事一覧へ関連記事Main.storyboardを自在に扱う。day2022年10月12日コメントこの投稿にはまだコメントがありません。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。検索このサイトについてプログラミング記事、関連記事、ブログを公開しております。