[過去ログ]
Flutterやろうよ!!! 2 (1002レス)
Flutterやろうよ!!! 2 http://mevius.5ch.net/test/read.cgi/tech/1611976959/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
44: デフォルトの名無しさん (ワッチョイ 9701-95wZ) [] 2021/02/06(土) 15:25:59 ID:F0c/bXFP0 >>42-43 Dart言語で、ListView.builder()の、itemBuilderに渡す関数を、_HogeHogeState クラスのメンバ変数(例:int _listMode)の値で切り替えたいんだけど、Dartで一番 スマートに記述するには、どう書けばいいの? できれば、関数ポインタの配列を定義して、_listModeをインデックスとして、 アクセスしたいんだが? C/C++で普通にできることができなくて、なんかイラつく。 http://mevius.5ch.net/test/read.cgi/tech/1611976959/44
46: デフォルトの名無しさん (ワッチョイ 9701-95wZ) [] 2021/02/06(土) 15:41:08 ID:F0c/bXFP0 ちなみに抜粋して書くと、今は、 Widget _getlistview() { switch(_listMode) { case 0: return ListView.builder( itemBuilder: _buildSimpleListItem, // 中略 break; case 1: return ListView.builder( itemBuilder: _buildIconListItem, // 中略 break; } } Widget build(BuildContext context){ log("*** _DemoPage3State::build() ***"); return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: _getlistview(), ); } って書いてる。 itemBuilder部分に、switch文の条件分岐を入れようとしたら、 エラーになった。 http://mevius.5ch.net/test/read.cgi/tech/1611976959/46
47: デフォルトの名無しさん (ワッチョイ 9701-95wZ) [] 2021/02/06(土) 15:42:59 ID:F0c/bXFP0 >>45 アクセス部分はそうだけど、知りたいのは、widgets[]の初期化部分なんだが? http://mevius.5ch.net/test/read.cgi/tech/1611976959/47
49: デフォルトの名無しさん (ワッチョイ 9701-95wZ) [] 2021/02/06(土) 15:53:57 ID:F0c/bXFP0 >>48 そんなん、中身固定の初心者向けのサンプルレベルやん。 やりたいのは、ListViewの見せ方を動的に変えたいってことだよ。 final var widgets[] = { _buildSimpleListItem, _buildIconListItem, // 以下略 }; Widget _buildSimpleListItem(int indexItem) { return Text(_listItems[indexItem]); }; Widget _buildIconListItem(int indexItem) { return ListTile{ leading: icon, title:Text(_listItems[indexItem]); ); }; てな書き方でいけるんだっけ? http://mevius.5ch.net/test/read.cgi/tech/1611976959/49
52: デフォルトの名無しさん (ワッチョイ 9701-95wZ) [] 2021/02/06(土) 16:11:36 ID:F0c/bXFP0 >>50-51 全く理解してないことが良く判った。 リストに表示する中身を、_listItems (例: List<String>) で保持して、_listMode は、同じPage内に配置した DropdownButton 等と紐付いていて、選択を切り替え た時点でsetState()してページ内のListViewの見せ方を変えたいの。 一応、やりたいこと自体は、糞な書き方でできることは確認してる。 説明の 都合上、ScaffoldのbodyはListViewだけにしてるけど、実際はもっと複雑。 http://mevius.5ch.net/test/read.cgi/tech/1611976959/52
55: デフォルトの名無しさん (ワッチョイ 9701-95wZ) [] 2021/02/06(土) 16:41:21 ID:F0c/bXFP0 >>53 例えば、ListView.builderを1つにして、 body: ListView.builder( itemBuilder: _getlistItem, // 略 ); Widget _getlistItem(int indexItem) { switch(_listMode) { case 0: return Text(_listItems[indexItem]); // 中略 break; case 1: return ListTile{ leading: icon, title:Text(_listItems[indexItem])); break; } と、itemBuilderに渡す関数も共通化して、その関数内でswitch〜caseで分岐して、 返すWidgetを変えてもいいんだが、本当にやりたいのは、switch〜caseを書く のではなく、Widgetを返す関数配列にしたいってこと。 http://mevius.5ch.net/test/read.cgi/tech/1611976959/55
57: デフォルトの名無しさん (ワッチョイ 9701-95wZ) [] 2021/02/06(土) 16:47:35 ID:F0c/bXFP0 >>54 だから、widgets[][]を、どこで初期化するの? 中身はファイル名の一覧とか可変が前提だよ。 それと、使うWidgetは、表示スタイルによってどれか1つで済むのに、二重のfor ループを廻して、毎回全部を作りなおすのか? 間違いではないが、糞プログラマ 認定だな。 http://mevius.5ch.net/test/read.cgi/tech/1611976959/57
58: デフォルトの名無しさん (ワッチョイ 9701-95wZ) [] 2021/02/06(土) 16:49:29 ID:F0c/bXFP0 >>56 なぜ、ListView.builderを使うのか、理解していないことが良く判った。 http://mevius.5ch.net/test/read.cgi/tech/1611976959/58
69: デフォルトの名無しさん (ワッチョイ 9701-95wZ) [] 2021/02/06(土) 22:06:19 ID:F0c/bXFP0 >>68 とりあえず、>>49のwidgets[]は、型は便宜上varとしているが、Widgetを返す 関数を保持されることを意図したつもり。 Widget _buildSimpleListItem(int indexItem)や、Widget _buildIconListItem (int indexItem)は、Widgetを返す関数の実装。 配列要素である関数自体は変わらないが定数ではないからconstではなく、final を 付けてみたが、final付けるとエラーになるかも。 ListView.builder()は、itemBuilderに渡す関数を.builder内部で繰り返し呼び出して、 Widgetを作るので、わざわざwidgets[][]なんて持つ必要がないという理解。 当然、ListView.builder()はHogeHogePageのbuild内で呼び出しているので、 _listModeと紐付いたDropdownButtonのonChanged: で、 (value) => setState(() { _listMode = menu.indexOf(value); } ), てな感じで更新を掛ける。 http://mevius.5ch.net/test/read.cgi/tech/1611976959/69
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.039s