ようこそFlutter野郎どもよ!!!
軽い開発環境でモバイルアプリ開発ができるなんて最高じゃねえか
AndroidもiOSも両方行ける、まさに漢のためのツールだな
https://flutter.dev/
前スレ
Flutterやろうよ!!!
https://mevius.5ch.net/test/read.cgi/tech/1527919660/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Flutterやろうよ!!! 2
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 8f5f-+np5)
2021/01/30(土) 12:22:39.97ID:4Fw02M/h020デフォルトの名無しさん (ワッチョイ a59b-qCTK)
2021/02/04(木) 11:05:37.12ID:ZzRKCYY/0 COCOAでAndroidだけメール届いてなかったって問題
こういうFlutterみたいなツール使ってれば起きなかったと言える?
こういうFlutterみたいなツール使ってれば起きなかったと言える?
21デフォルトの名無しさん (アウアウエー Sa52-2MN+)
2021/02/04(木) 11:28:29.16ID:5YrYKjTfa >>19
>>意識高い系アーリー
アダプターが作った、素人向けの入門サイトや、プラグインの使い方の解説なんて、
他所から拾い集めた情報の劣化コピーで役に立たん。
素人向け入門サイトに無い情報を
素人向け入門サイトで探しているからでしょ。
>>意識高い系アーリー
アダプターが作った、素人向けの入門サイトや、プラグインの使い方の解説なんて、
他所から拾い集めた情報の劣化コピーで役に立たん。
素人向け入門サイトに無い情報を
素人向け入門サイトで探しているからでしょ。
22デフォルトの名無しさん (ワッチョイ b501-7mxN)
2021/02/04(木) 11:45:06.25ID:zxbI5nao023デフォルトの名無しさん (ワッチョイ 7d01-+VrM)
2021/02/04(木) 12:12:51.42ID:gjWC+ihb024デフォルトの名無しさん (ワッチョイ 7d01-+VrM)
2021/02/04(木) 12:17:32.16ID:gjWC+ihb0 >>20
今回のCOCOAバグはBLEの近距離判断パラメータをiOSで調整したらそのパラメータがAndroidでは不適切で濃厚接触と判断されなかったって事のようなので、別々にそれぞれのネイティブ環境で開発してれば防げたかもね。
今回のCOCOAバグはBLEの近距離判断パラメータをiOSで調整したらそのパラメータがAndroidでは不適切で濃厚接触と判断されなかったって事のようなので、別々にそれぞれのネイティブ環境で開発してれば防げたかもね。
25デフォルトの名無しさん (ワッチョイ b501-7mxN)
2021/02/04(木) 12:40:11.56ID:zxbI5nao0 >>24
当初、文科省は、9月リリースで解消したと発表してたみたいだけど、報道では
9月リリース以降に発生と言っていたり、どれが正しい情報なんかねぇ?
濃厚接触者との接触があったかどうかの判断はサーバー側で行って、ユーザーに
通知してくるんだよね? もし、BLEの近接判断検出レベルの問題なら、そもそも
接触(接近)自体が検出されなくて、サーバーにも通知(記録)されていないのでは?
当初、文科省は、9月リリースで解消したと発表してたみたいだけど、報道では
9月リリース以降に発生と言っていたり、どれが正しい情報なんかねぇ?
濃厚接触者との接触があったかどうかの判断はサーバー側で行って、ユーザーに
通知してくるんだよね? もし、BLEの近接判断検出レベルの問題なら、そもそも
接触(接近)自体が検出されなくて、サーバーにも通知(記録)されていないのでは?
26デフォルトの名無しさん (ワッチョイ b501-7mxN)
2021/02/04(木) 12:44:15.49ID:zxbI5nao0 >>23
そんなに幾つもプラグインを試したわけじゃないけど、どれもなんかしら不具合がある
印象。 あと、更新されてなくて最終リリース後の新しいOSで動かないとか大杉。
結局、公開されているプラグインは「釣り餌」で、ローカルにフォークして、独自に
メンテナンスするしかないのかなって気がする。
そんなに幾つもプラグインを試したわけじゃないけど、どれもなんかしら不具合がある
印象。 あと、更新されてなくて最終リリース後の新しいOSで動かないとか大杉。
結局、公開されているプラグインは「釣り餌」で、ローカルにフォークして、独自に
メンテナンスするしかないのかなって気がする。
27デフォルトの名無しさん (ワッチョイ 7d01-+VrM)
2021/02/04(木) 13:48:42.81ID:gjWC+ihb0 >>25
不具合の原因を聞く限り多分クラウド側まで接触通知が上がってなかったんじゃないかな?
一般メディアでは通知がされないって分かりやすい結果だけが報道されてるけど。
どの端末とどの端末がいつ近接してたかってのはコロナ確定前にも情報収集する必要があるはずなので、Androidだけ極端にデータが少ないってすぐに気付きそうなもんだがねぇ。何やってるんだか。
不具合の原因を聞く限り多分クラウド側まで接触通知が上がってなかったんじゃないかな?
一般メディアでは通知がされないって分かりやすい結果だけが報道されてるけど。
どの端末とどの端末がいつ近接してたかってのはコロナ確定前にも情報収集する必要があるはずなので、Androidだけ極端にデータが少ないってすぐに気付きそうなもんだがねぇ。何やってるんだか。
28デフォルトの名無しさん (ワッチョイ 7d01-cVNB)
2021/02/04(木) 15:17:37.66ID:ooZBaTlj029デフォルトの名無しさん (ワッチョイ de8f-JbS/)
2021/02/04(木) 19:29:04.26ID:RAyD64IW0 >>25
サーバーで濃厚接触判定なんかしないだろ。
プライバシー情報を極力取得しないんだから陽性判定された人が自分でCOCOAに陽性登録するとスマホ内で生成されたユニークIDがサーバーに保存されるだけ。
陽性判定者のユニークIDをCOCOA利用者全員に配布してクライアントの中で判定すればいいんだし。
サーバーで濃厚接触判定なんかしないだろ。
プライバシー情報を極力取得しないんだから陽性判定された人が自分でCOCOAに陽性登録するとスマホ内で生成されたユニークIDがサーバーに保存されるだけ。
陽性判定者のユニークIDをCOCOA利用者全員に配布してクライアントの中で判定すればいいんだし。
30デフォルトの名無しさん (ワッチョイ 662c-pWJC)
2021/02/04(木) 19:38:53.67ID:v9fdGQAX0 Flutterと関係ないからどうでもいいよ
31デフォルトの名無しさん (ワッチョイ b501-7mxN)
2021/02/04(木) 20:07:08.96ID:zxbI5nao0 >>29
陽性判定者のユニークIDをCOCOA利用者全員に配布って、COCOAって本気で
そんな糞実装してるのか?
各自の端末内に、過去に3分以上だっけ? 近接した端末のユニークIDを全部記録
してるの? 最大何件か知らんけど、過去2週間以内分の?
COCOA利用者全員に感染者のユニークIDを配布って時点で、ユニークIDは感染者
個人を特定可能な情報じゃないの? それに、SMSなんか使ってたらユニークIDと
端末の電話番号が判らないと送れないと思うのだが? それとも、端末のアプリ
から定期的にGETしにいくの?
陽性判定者のユニークIDをCOCOA利用者全員に配布って、COCOAって本気で
そんな糞実装してるのか?
各自の端末内に、過去に3分以上だっけ? 近接した端末のユニークIDを全部記録
してるの? 最大何件か知らんけど、過去2週間以内分の?
COCOA利用者全員に感染者のユニークIDを配布って時点で、ユニークIDは感染者
個人を特定可能な情報じゃないの? それに、SMSなんか使ってたらユニークIDと
端末の電話番号が判らないと送れないと思うのだが? それとも、端末のアプリ
から定期的にGETしにいくの?
32デフォルトの名無しさん (ワッチョイ b501-7mxN)
2021/02/04(木) 20:17:28.27ID:zxbI5nao0 >>28
どんなプラグイン使ったか判らんと何とも。 JSONいじくるとか、そもそもH/W
寄りのパッケージでなければ、OSの仕様変更の影響を受ける可能性は少ないし、
規模感に至っては、人それぞれだし。
今はDart言語自体にもNull Safetyへの仕様変更が入ってて、ビルド時に次の
リリースで廃止予定ってな警告メッセージが結構出る。 あと、Debugビルドで
問題なく動いていても、Releaseビルドでは動かないパッケージが多い。
Releaseビルドは、単に右上の「DEBUG」を消すんじゃなくて「--release」オプ
ションを付けてビルドするって意味ね。(デフォルトは--debugで省略可)
バイナリサイズが全く違って起動も早くなるのだが、動かないのでは話にならん。
どんなプラグイン使ったか判らんと何とも。 JSONいじくるとか、そもそもH/W
寄りのパッケージでなければ、OSの仕様変更の影響を受ける可能性は少ないし、
規模感に至っては、人それぞれだし。
今はDart言語自体にもNull Safetyへの仕様変更が入ってて、ビルド時に次の
リリースで廃止予定ってな警告メッセージが結構出る。 あと、Debugビルドで
問題なく動いていても、Releaseビルドでは動かないパッケージが多い。
Releaseビルドは、単に右上の「DEBUG」を消すんじゃなくて「--release」オプ
ションを付けてビルドするって意味ね。(デフォルトは--debugで省略可)
バイナリサイズが全く違って起動も早くなるのだが、動かないのでは話にならん。
33デフォルトの名無しさん (ワッチョイ 7d01-+VrM)
2021/02/04(木) 20:24:42.42ID:gjWC+ihb0 >>29
さすがにそれはないんじゃないかな?
一定時間以上の近接IDがお互いに紐付いてサーバにストアされ、後で陽性登録されたIDに紐付いたIDのスマホに通知されるって事じゃない?
それほど難しい話ではない。不具合は近接したかどうかの判定。
BTのビーコン使うので近接判定はADV_NONCONN_INDのRSSIベースだろうけどそのへんがiOSとAndroidで扱いが違ったんだろうね。
さすがにそれはないんじゃないかな?
一定時間以上の近接IDがお互いに紐付いてサーバにストアされ、後で陽性登録されたIDに紐付いたIDのスマホに通知されるって事じゃない?
それほど難しい話ではない。不具合は近接したかどうかの判定。
BTのビーコン使うので近接判定はADV_NONCONN_INDのRSSIベースだろうけどそのへんがiOSとAndroidで扱いが違ったんだろうね。
34デフォルトの名無しさん (ワッチョイ de8f-JbS/)
2021/02/04(木) 23:44:56.47ID:RAyD64IW0 Flutterと関係ないね。失礼しました
35デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/05(金) 10:58:13.21ID:qqlnXlup0 そういえば、Flutterのデスクトップ対応だけど、Windows版もアルファ版のまま
だけど、MacOSや、Linux のデスクトップ対応版の話って聞かないね。
master channelの最新版で「flutter help build」ってやっても、MacOS、Linux用
のビルドオプションすら出てこないし。 dev channelだとあるの?
だけど、MacOSや、Linux のデスクトップ対応版の話って聞かないね。
master channelの最新版で「flutter help build」ってやっても、MacOS、Linux用
のビルドオプションすら出てこないし。 dev channelだとあるの?
36デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/05(金) 12:17:38.02ID:sQbQrry7037デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/05(金) 14:50:12.19ID:qqlnXlup0 >>36
クレクレ君かな? デバッグのやり方を知らないだけでは?
例えば、pingのパッケージは幾つかあるけど「easyping: ^1.0.1」が、Debug
ビルドでは動くが、Releaseビルドでは動かない。 これは特にビルド時の警告
メッセージ出ない。
過去に出ている「Issue」はClosedだけど、関係あるかどうかわからん。
Flutter, ping packets are not sent in release version #13
ttps://github.com/rikulo/socket.io-client-dart/issues/13
ちなみに、flutterをmaster channelに切り替えて、「flutter upgrade」で最新に
更新すると、○○は非推奨で次のリリースで廃止予定ってな警告メッセージが沢山
出るようになる。
クレクレ君かな? デバッグのやり方を知らないだけでは?
例えば、pingのパッケージは幾つかあるけど「easyping: ^1.0.1」が、Debug
ビルドでは動くが、Releaseビルドでは動かない。 これは特にビルド時の警告
メッセージ出ない。
過去に出ている「Issue」はClosedだけど、関係あるかどうかわからん。
Flutter, ping packets are not sent in release version #13
ttps://github.com/rikulo/socket.io-client-dart/issues/13
ちなみに、flutterをmaster channelに切り替えて、「flutter upgrade」で最新に
更新すると、○○は非推奨で次のリリースで廃止予定ってな警告メッセージが沢山
出るようになる。
38デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/05(金) 15:03:29.18ID:sQbQrry7039デフォルトの名無しさん (エムゾネ FFbf-Gowg)
2021/02/05(金) 19:28:24.19ID:FeqoYHE1F null safety言語使ったことないだけだろ
40デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/05(金) 20:19:16.88ID:sQbQrry70 swift1からやってるけど・・
41デフォルトの名無しさん (ワッチョイ b75f-Qljn)
2021/02/06(土) 01:33:12.54ID:PZ9Rc0Bf0 みんなflutterのためだけにdart覚えたの?
42デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 05:10:52.28ID:pJAT2BWO0 そうだよ。ってかJSとか知ってればdartなんか覚えるの簡単
43デフォルトの名無しさん (ワッチョイ d701-8aPo)
2021/02/06(土) 06:11:47.13ID:0l8rGy4F0 別にDartつっても特別変な構文があるわけでもないし言語習得にはほとんど苦労しなかったな。
その代わりWidgetの癖の強さは未だに苦労する。
その代わりWidgetの癖の強さは未だに苦労する。
44デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/06(土) 15:25:59.94ID:F0c/bXFP0 >>42-43
Dart言語で、ListView.builder()の、itemBuilderに渡す関数を、_HogeHogeState
クラスのメンバ変数(例:int _listMode)の値で切り替えたいんだけど、Dartで一番
スマートに記述するには、どう書けばいいの?
できれば、関数ポインタの配列を定義して、_listModeをインデックスとして、
アクセスしたいんだが?
C/C++で普通にできることができなくて、なんかイラつく。
Dart言語で、ListView.builder()の、itemBuilderに渡す関数を、_HogeHogeState
クラスのメンバ変数(例:int _listMode)の値で切り替えたいんだけど、Dartで一番
スマートに記述するには、どう書けばいいの?
できれば、関数ポインタの配列を定義して、_listModeをインデックスとして、
アクセスしたいんだが?
C/C++で普通にできることができなくて、なんかイラつく。
45デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 15:39:25.07ID:pJAT2BWO0 return widgets[index];
46デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/06(土) 15:41:08.20ID: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文の条件分岐を入れようとしたら、
エラーになった。
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文の条件分岐を入れようとしたら、
エラーになった。
47デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/06(土) 15:42:59.81ID:F0c/bXFP0 >>45
アクセス部分はそうだけど、知りたいのは、widgets[]の初期化部分なんだが?
アクセス部分はそうだけど、知りたいのは、widgets[]の初期化部分なんだが?
48デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 15:50:37.78ID:pJAT2BWO049デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/06(土) 15:53:57.98ID: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]);
);
};
てな書き方でいけるんだっけ?
そんなん、中身固定の初心者向けのサンプルレベルやん。
やりたいのは、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]);
);
};
てな書き方でいけるんだっけ?
50デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 15:59:48.39ID:pJAT2BWO0 ItemBuilder1つでそのListViewのインスタンスをプロパティで持つなりしてsetStateすればいくらでも見た目変えられるだろ、頭使え
51デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 16:01:15.50ID:pJAT2BWO0 ListViewに渡すパラメータをプロパティで持つ だった
52デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/06(土) 16:11:36.00ID:F0c/bXFP0 >>50-51
全く理解してないことが良く判った。
リストに表示する中身を、_listItems (例: List<String>) で保持して、_listMode
は、同じPage内に配置した DropdownButton 等と紐付いていて、選択を切り替え
た時点でsetState()してページ内のListViewの見せ方を変えたいの。
一応、やりたいこと自体は、糞な書き方でできることは確認してる。 説明の
都合上、ScaffoldのbodyはListViewだけにしてるけど、実際はもっと複雑。
全く理解してないことが良く判った。
リストに表示する中身を、_listItems (例: List<String>) で保持して、_listMode
は、同じPage内に配置した DropdownButton 等と紐付いていて、選択を切り替え
た時点でsetState()してページ内のListViewの見せ方を変えたいの。
一応、やりたいこと自体は、糞な書き方でできることは確認してる。 説明の
都合上、ScaffoldのbodyはListViewだけにしてるけど、実際はもっと複雑。
53デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 16:16:14.01ID:pJAT2BWO0 >>52
だから、ListViewは1つでreturnする中身を変えりゃいいじゃん
だから、ListViewは1つでreturnする中身を変えりゃいいじゃん
54デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 16:23:30.72ID:pJAT2BWO0 return widgets[_listMode][index]; で簡単に出来るだろw
55デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/06(土) 16:41:21.24ID: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を返す関数配列にしたいってこと。
例えば、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を返す関数配列にしたいってこと。
56デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 16:44:34.07ID:pJAT2BWO0 >>55
ならsetStateする前にListViewしたいwidget全要素作れば?
ならsetStateする前にListViewしたいwidget全要素作れば?
57デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/06(土) 16:47:35.00ID:F0c/bXFP0 >>54
だから、widgets[][]を、どこで初期化するの?
中身はファイル名の一覧とか可変が前提だよ。
それと、使うWidgetは、表示スタイルによってどれか1つで済むのに、二重のfor
ループを廻して、毎回全部を作りなおすのか? 間違いではないが、糞プログラマ
認定だな。
だから、widgets[][]を、どこで初期化するの?
中身はファイル名の一覧とか可変が前提だよ。
それと、使うWidgetは、表示スタイルによってどれか1つで済むのに、二重のfor
ループを廻して、毎回全部を作りなおすのか? 間違いではないが、糞プログラマ
認定だな。
58デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/06(土) 16:49:29.40ID:F0c/bXFP0 >>56
なぜ、ListView.builderを使うのか、理解していないことが良く判った。
なぜ、ListView.builderを使うのか、理解していないことが良く判った。
59デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 17:03:39.75ID:pJAT2BWO060デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 17:12:16.78ID:pJAT2BWO0 > だから、widgets[][]を、どこで初期化するの?
setStateする前だって言ってんだろ。
var list = []; って知ってる?全部作らなくていいの分かる?
その態度で、ど素人かよ・・向いてないから辞めな
setStateする前だって言ってんだろ。
var list = []; って知ってる?全部作らなくていいの分かる?
その態度で、ど素人かよ・・向いてないから辞めな
61デフォルトの名無しさん (ワッチョイ 3790-Zn1k)
2021/02/06(土) 17:22:25.88ID:MVtJKBn70 >>49
別にこれでよくね?
IndexedWidgetBuilder関数自体をswitchで返すようにしてListView.Builderの記述を一つにするとか細かいのはあるが
つか、widgets[]何かいらんだろ?
別にこれでよくね?
IndexedWidgetBuilder関数自体をswitchで返すようにしてListView.Builderの記述を一つにするとか細かいのはあるが
つか、widgets[]何かいらんだろ?
62デフォルトの名無しさん (ワッチョイ 3790-Zn1k)
2021/02/06(土) 17:25:30.28ID:MVtJKBn70 今回はListView同士だが、表示モードでリスト表示やグリッド表示切り替えたりする機能じ実装したいんだろ?
63デフォルトの名無しさん (ワッチョイ 3790-Zn1k)
2021/02/06(土) 17:28:26.46ID:MVtJKBn70 ごめん>>55とか見てなかった
64デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 17:31:01.68ID:pJAT2BWO0 そもそもitemBuilderに渡せるクロージャの型は決まってるのに、そこでやりたがろうとするのか間違い。
returnする中身を_listModeで変えりゃいいだけ。
returnする中身を_listModeで変えりゃいいだけ。
65デフォルトの名無しさん (ワッチョイ 3790-Zn1k)
2021/02/06(土) 17:36:00.31ID:MVtJKBn70 とりあえず、>>55はdartで十分スマートだから問題ないといっておく
Widgetを返す関数配列とか余計なことすると一人よがりのプログラムになりそうとだけ言っておく
仮にそこまでやって何の利点があるのか知らんが
Widgetを返す関数配列とか余計なことすると一人よがりのプログラムになりそうとだけ言っておく
仮にそこまでやって何の利点があるのか知らんが
66デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 17:43:49.14ID:pJAT2BWO0 もしもlistの件数が多いなら、flutterはreusableCellみたいな機構/考え方がないから、ScrollControllerでスクロールを監視して、止まったら実widgetを生成するとかの施策を作る方がよっぽどメリットある。
さらにそんな感じのListViewが複数あるならリビルト抑制のためにInheritedModel化しなければならない。
さらにそんな感じのListViewが複数あるならリビルト抑制のためにInheritedModel化しなければならない。
67デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 19:10:30.57ID:pJAT2BWO0 糞プログラマwのオレが余計なアドバイスしちゃったかなw
まぁ3年くらいは諦めずに続けてみる事だwww
まぁ3年くらいは諦めずに続けてみる事だwww
68デフォルトの名無しさん (ワッチョイ d701-8aPo)
2021/02/06(土) 19:29:48.12ID:0l8rGy4F0 >>55
dartのwidgetはプロパティ変更のためにはwidgetのnewが必ず伴わないといけないので、widget配列にインスタンスを先に定義してその参照を返すだけではrebuildされず画面更新されない。
コンストラクタのメンバーにFuture渡すとかすればよろし。
dartのwidgetはプロパティ変更のためにはwidgetのnewが必ず伴わないといけないので、widget配列にインスタンスを先に定義してその参照を返すだけではrebuildされず画面更新されない。
コンストラクタのメンバーにFuture渡すとかすればよろし。
69デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/06(土) 22:06:19.05ID: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); } ),
てな感じで更新を掛ける。
とりあえず、>>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); } ),
てな感じで更新を掛ける。
70デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 22:16:32.47ID:pJAT2BWO0 >Widgetを返す関数
これが無駄
これが無駄
71デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/06(土) 23:04:48.80ID:pJAT2BWO0 ListView.builder() はListView内のセル1つのコンテンツを作るわけじゃなくて、ListViewという仕組みを作るものだということを理解しよう。
そのコンテンツはreturnするwidgetによって切り替えよう。
そのコンテンツはreturnするwidgetによって切り替えよう。
72デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/07(日) 00:02:01.56ID:AkpxQPsh0 どうしてもitemBuilderを切り替えたいなら、
var _itemBuilders = <Widget Function(BuildContext, int)>[];
・・
itemBuilder: _itemBuilders[_listMode]
・・
ただ、itemCount:の明示が分かりにくくなり(がち)でバグの元になるので普通はこう書かないだろう。。
var _itemBuilders = <Widget Function(BuildContext, int)>[];
・・
itemBuilder: _itemBuilders[_listMode]
・・
ただ、itemCount:の明示が分かりにくくなり(がち)でバグの元になるので普通はこう書かないだろう。。
73デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/07(日) 01:02:21.41ID:5iRjnGor0 >>70-72
何も理解しとらんな。ListView.builder()自体は、ListViewを返すが、itemBuilder
が、ListView内に表示する個々のアイテム(Widget)を作るための関数だよ。
内部実装まで追いかけてはいないが、実際は、ListView表示に必要なスクロール範囲
内に見える部分のindex〜index+nの分だけアイテムを作って描画しているのでは
ないかと思う。 これはWindowsの仮想リストビューと同じような実装で、珍しく
もない。
だからListView.builder()の引数、itemCount: null, で無制限スクロールできる。
何も理解しとらんな。ListView.builder()自体は、ListViewを返すが、itemBuilder
が、ListView内に表示する個々のアイテム(Widget)を作るための関数だよ。
内部実装まで追いかけてはいないが、実際は、ListView表示に必要なスクロール範囲
内に見える部分のindex〜index+nの分だけアイテムを作って描画しているのでは
ないかと思う。 これはWindowsの仮想リストビューと同じような実装で、珍しく
もない。
だからListView.builder()の引数、itemCount: null, で無制限スクロールできる。
74デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/07(日) 01:14:57.97ID:AkpxQPsh0 ItemBuilderは1コンテンツのコンテナを提供してるだけだアホ
75デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/07(日) 01:22:23.18ID:AkpxQPsh0 >内部実装まで追いかけてはいないが、実際は、ListView表示に必要なスクロール範囲内に見える部分のindex〜index+nの分だけアイテムを作って描画しているのでは
ないかと思う。
スクロールした分全部作ってる。見えてる分じゃない。
ないかと思う。
スクロールした分全部作ってる。見えてる分じゃない。
76デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/07(日) 01:24:19.39ID:AkpxQPsh0 >>73
何も理解してないのはオマエw
何も理解してないのはオマエw
77デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/07(日) 01:38:30.26ID:5iRjnGor0 >>74-76
return widget[][];なんて書く低能は、いい加減消えてくれないかな?
スクロールした分を全部作り直してたら、アイテム数が増えればリソース食うし、
等比級数的に遅くなるから、必要な部分だけデータを要求して再描画するのは
ごく普通の実装なのだが?
return widget[][];なんて書く低能は、いい加減消えてくれないかな?
スクロールした分を全部作り直してたら、アイテム数が増えればリソース食うし、
等比級数的に遅くなるから、必要な部分だけデータを要求して再描画するのは
ごく普通の実装なのだが?
78デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/07(日) 01:44:43.73ID:AkpxQPsh0 >>77
オマエが消えろカス
オマエが消えろカス
79デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/07(日) 01:46:24.73ID:AkpxQPsh0 >>77
あとお前ITセンス無いよ
あとお前ITセンス無いよ
80デフォルトの名無しさん (ワッチョイ 5763-JWMU)
2021/02/07(日) 17:16:20.79ID:NoxA0gm+0 休日って感じでええな
81デフォルトの名無しさん (ブーイモ MM1b-+irq)
2021/02/07(日) 17:37:11.35ID:VQW6QCV3M Dart「私のために争わないで!」
82デフォルトの名無しさん (ワッチョイ b75f-Hbjn)
2021/02/08(月) 21:04:17.25ID:fXU526Wm0 class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
この
const MyApp({Key? key}) : super(key: key);
っていろんなサンプルコードにおまじないのように存在しますが
何の意味があるコードでしょうか?
const MyApp({Key? key}) : super(key: key);
この
const MyApp({Key? key}) : super(key: key);
っていろんなサンプルコードにおまじないのように存在しますが
何の意味があるコードでしょうか?
83デフォルトの名無しさん (ブーイモ MMcf-Wgeg)
2021/02/08(月) 22:16:34.05ID:U8Md53kEM それがコンストラクタであることはわかる?
84デフォルトの名無しさん (ワッチョイ b75f-Hbjn)
2021/02/08(月) 22:23:55.78ID:fXU526Wm0 わかりません><
85デフォルトの名無しさん (ワッチョイ 1763-kbB0)
2021/02/08(月) 22:50:39.51ID:Vrbohkxj086デフォルトの名無しさん (テテンテンテン MM8f-XFXP)
2021/02/09(火) 00:49:39.26ID:bUho71ueM いつみてもnamedの書き方がキモいな
💩dartは
💩dartは
87デフォルトの名無しさん (ワッチョイ d701-8aPo)
2021/02/09(火) 05:41:27.49ID:4s6aj3EG0 >>82
継承元のコンストラクタにkeyを渡してるだけ。
継承元のコンストラクタにkeyを渡してるだけ。
88デフォルトの名無しさん (スププ Sdbf-bFiF)
2021/02/09(火) 08:27:56.90ID:GPf+a2VOd そもそもkeyて何に使うの?
89デフォルトの名無しさん (スフッ Sdbf-smwP)
2021/02/09(火) 11:09:42.19ID:QUiKVEcEd >>85
それは何でも同じやん。
それは何でも同じやん。
90デフォルトの名無しさん (ワッチョイ 1763-kbB0)
2021/02/09(火) 11:25:03.68ID:nKesl+r+091デフォルトの名無しさん (ワッチョイ d701-8aPo)
2021/02/09(火) 11:50:18.06ID:4s6aj3EG092デフォルトの名無しさん (スフッ Sdbf-BUOo)
2021/02/09(火) 12:49:34.02ID:anEuZ52ed >>91
横からだけどありがとう
横からだけどありがとう
93デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/09(火) 15:11:33.26ID:ANc0E1ay0 flutterはともかくdartは分かりやすい。初学者向け。
94デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/09(火) 15:19:45.18ID:ANc0E1ay0 ただ仕組みを理解してないと結構勘違いする。
例えばプラグインを作る時のevent subscriptionはbroadcastStreamなのでcontroller.closeが出来ない。
nullが返ってきたら終わりみたいな処理を待つには自分でStreamControllerを作ってそのStreamをFuture.waitするとか。
例えばプラグインを作る時のevent subscriptionはbroadcastStreamなのでcontroller.closeが出来ない。
nullが返ってきたら終わりみたいな処理を待つには自分でStreamControllerを作ってそのStreamをFuture.waitするとか。
95デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/09(火) 18:11:24.23ID:KQnFnSaF0 >>93-94
シッタカ坊や、まだいたのかぃ?
>>74-76
> スクロールした分全部作ってる。見えてる分じゃない。
> 何も理解してないのはオマエw
とりあえず、>>49 のサンプルを改造して、ListView.builder()のitemBuilder
に指定したコールバック関数が、いつのタイミングで、何回呼び出されているか
確認できるよう、
Widget _buildSimpleListItem(BuildContext context, int index)
{
print("_buildSimpleListItem(${index})");
return Text(_listItems[index]);
}
として、ListView.builder()のitemCount: に、画面に絶対収まり切らない数
(適当に500)を指定した、デバッグ実行してみた。
シッタカ坊や、まだいたのかぃ?
>>74-76
> スクロールした分全部作ってる。見えてる分じゃない。
> 何も理解してないのはオマエw
とりあえず、>>49 のサンプルを改造して、ListView.builder()のitemBuilder
に指定したコールバック関数が、いつのタイミングで、何回呼び出されているか
確認できるよう、
Widget _buildSimpleListItem(BuildContext context, int index)
{
print("_buildSimpleListItem(${index})");
return Text(_listItems[index]);
}
として、ListView.builder()のitemCount: に、画面に絶対収まり切らない数
(適当に500)を指定した、デバッグ実行してみた。
96デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/09(火) 18:11:38.83ID:KQnFnSaF0 案の定、自分の想像通り全てのアイテムは作成していなかった。 ただ、なぜか
判らないが、リスト表示範囲にピッタリ収まる数より少し余分に呼ばれていた。
どうやら、ListViewの実際の表示サイズではなく、AppBar等を含めたディス
プレイの表示ピクセル数に収まるアイテム数のWidgetを作成しているっぽい。
また、スクロール操作した際も、上/下方向とも移動した行数の分だけ呼ばれ、
スクロール前後で範囲から外れない分はおそらく保持されたままで呼ばれなかった。
「ITセンス無い」なんて言っちゃう時点で、いつもの意識高い系だと思ったが、
これで(ワッチョイ d701-kh8G) が、フカシFlutter野郎であると証明できた。
さぁ、キミも手元のFlutter環境で、今すぐ確認してみよう!
プライドだけ高いお馬鹿センセイの弟子にならないよう、くれぐれもチューイせよ!
判らないが、リスト表示範囲にピッタリ収まる数より少し余分に呼ばれていた。
どうやら、ListViewの実際の表示サイズではなく、AppBar等を含めたディス
プレイの表示ピクセル数に収まるアイテム数のWidgetを作成しているっぽい。
また、スクロール操作した際も、上/下方向とも移動した行数の分だけ呼ばれ、
スクロール前後で範囲から外れない分はおそらく保持されたままで呼ばれなかった。
「ITセンス無い」なんて言っちゃう時点で、いつもの意識高い系だと思ったが、
これで(ワッチョイ d701-kh8G) が、フカシFlutter野郎であると証明できた。
さぁ、キミも手元のFlutter環境で、今すぐ確認してみよう!
プライドだけ高いお馬鹿センセイの弟子にならないよう、くれぐれもチューイせよ!
97デフォルトの名無しさん (ワッチョイ 9701-6qHG)
2021/02/09(火) 18:26:56.12ID:qUmf+U4D0 仮想リスト・テクノロジー™では?
98デフォルトの名無しさん (ワッチョイ 9f05-Oo46)
2021/02/09(火) 19:08:59.58ID:qBw0aS8i0 そりゃすぐにスクロール初めてもフレーム落ちしないように余剰に前後キャッシュするだろうよ
AndroidのListViewもキャッシュするよ
AndroidのListViewもキャッシュするよ
99デフォルトの名無しさん (ワッチョイ d701-8aPo)
2021/02/09(火) 19:26:05.29ID:4s6aj3EG0 >>55
そういや俺も初心者の頃、スキン切り替え実装するために同じようにwidget配列作って失敗したなと思い出して見直したら、あなたと同じようにbuild内で普通にswitch分岐してたわ。
今作るならインスタンス配列じゃなくてtype配列を作ってその型を生成するように実装するかな?もちろん配列のそれぞれのclassは同じclassから継承しておいて。
dartもtypeからインスタンス生成できるとは思うんだけどやったことはないので具体的なやり方は知らん。
そういや俺も初心者の頃、スキン切り替え実装するために同じようにwidget配列作って失敗したなと思い出して見直したら、あなたと同じようにbuild内で普通にswitch分岐してたわ。
今作るならインスタンス配列じゃなくてtype配列を作ってその型を生成するように実装するかな?もちろん配列のそれぞれのclassは同じclassから継承しておいて。
dartもtypeからインスタンス生成できるとは思うんだけどやったことはないので具体的なやり方は知らん。
100デフォルトの名無しさん (ワッチョイ d701-8aPo)
2021/02/09(火) 19:35:55.01ID:4s6aj3EG0 >>99
あ、widgetを返す関数はStatefulWidgetとかに追い出すこと前提な。
あ、widgetを返す関数はStatefulWidgetとかに追い出すこと前提な。
101デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/09(火) 21:47:45.51ID:ANc0E1ay0 >>96
モノホンのバカだったのか・・
モノホンのバカだったのか・・
102デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/09(火) 21:53:55.58ID:ANc0E1ay0 > ワッチョイ 9701-95wZ のキチガイへ
サムネイルとか入れてみ、スクロール2000件めくらいでクラッシュするから
サムネイルとか入れてみ、スクロール2000件めくらいでクラッシュするから
103デフォルトの名無しさん (ワッチョイ d790-XJ0Q)
2021/02/09(火) 22:30:23.42ID:iPD7ZJPG0 https://api.flutter.dev/flutter/widgets/ListView-class.html
のところに書いてあるでしょ
Child elements' lifecycle
Creation
While laying out the list, visible children's elements, states and render objects will be created lazily based on existing widgets (such as when using the default constructor) or lazily provided ones (such as when using the ListView.builder constructor).
リストをレイアウトするとき、見える子のElement,State,RenderObjectsがLazyに作成される
のところに書いてあるでしょ
Child elements' lifecycle
Creation
While laying out the list, visible children's elements, states and render objects will be created lazily based on existing widgets (such as when using the default constructor) or lazily provided ones (such as when using the ListView.builder constructor).
リストをレイアウトするとき、見える子のElement,State,RenderObjectsがLazyに作成される
104デフォルトの名無しさん (ワッチョイ d790-XJ0Q)
2021/02/09(火) 22:30:53.65ID:iPD7ZJPG0 Destruction
When a child is scrolled out of view, the associated element subtree, states and render objects are destroyed. A new child at the same position in the list will be lazily recreated along with new elements,
states and render objects when it is scrolled back.
子がビューからスクロールアウトしたら、関連するElement,State,RenderObjectsは全部破棄される
When a child is scrolled out of view, the associated element subtree, states and render objects are destroyed. A new child at the same position in the list will be lazily recreated along with new elements,
states and render objects when it is scrolled back.
子がビューからスクロールアウトしたら、関連するElement,State,RenderObjectsは全部破棄される
105デフォルトの名無しさん (ワッチョイ d790-XJ0Q)
2021/02/09(火) 22:35:48.60ID:iPD7ZJPG0 で、その後に
Destruction mitigation
で続きがあって、ListView.BuilderのaddAutomaticKeepAlivesがtrueだと保持されるの??
ここら辺はまだよく知らねw
Destruction mitigation
で続きがあって、ListView.BuilderのaddAutomaticKeepAlivesがtrueだと保持されるの??
ここら辺はまだよく知らねw
106デフォルトの名無しさん (ワッチョイ d790-XJ0Q)
2021/02/09(火) 23:28:39.03ID:iPD7ZJPG0 だから、結局、基本、見えてる部分+前後の多少のマージンの部分だけが保持されてるでOKじゃね??
見えてない部分は保持されてない
巨大なリストでも問題なし
でこの話は終了
異論は認めない
見えてない部分は保持されてない
巨大なリストでも問題なし
でこの話は終了
異論は認めない
107デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/09(火) 23:39:50.66ID:ANc0E1ay0 アホなの?
だからサムネイルとか非同期取得コンテンツを入れてみ。
だからサムネイルとか非同期取得コンテンツを入れてみ。
108デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/09(火) 23:40:23.81ID:KQnFnSaF0109デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/09(火) 23:42:06.68ID:ANc0E1ay0 >>108
自演してないで消えろよハゲwww
自演してないで消えろよハゲwww
110デフォルトの名無しさん (ワッチョイ 9701-95wZ)
2021/02/09(火) 23:44:25.44ID:KQnFnSaF0 >>109
顔真っ赤にして、一日中張り付いてるの? 暇やね? 無職か?
顔真っ赤にして、一日中張り付いてるの? 暇やね? 無職か?
111デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/09(火) 23:48:47.23ID:ANc0E1ay0 >>110
え?お前無職なのwww
え?お前無職なのwww
112デフォルトの名無しさん (ワッチョイ b75f-Hbjn)
2021/02/10(水) 00:12:19.53ID:y0GPcK+u0 君たち面白いねwwww
113デフォルトの名無しさん (ワッチョイ 1763-kbB0)
2021/02/10(水) 08:13:01.49ID:bUgfldyu0 だからいっただろう
強制コテハンのワッチョイなんてつけるから荒れる
管理者いないんだから荒れるに決まってる
強制コテハンのワッチョイなんてつけるから荒れる
管理者いないんだから荒れるに決まってる
114デフォルトの名無しさん (ワッチョイ 3714-smwP)
2021/02/10(水) 22:04:43.15ID:EZBazwT90115デフォルトの名無しさん (ワッチョイ b75f-Hbjn)
2021/02/10(水) 22:33:17.28ID:CSG59Cdu0 Dart 3.0で実装されるnull安全に向けて
変数の初期値を入れる作業をしますね
変数の初期値を入れる作業をしますね
116デフォルトの名無しさん (ワッチョイ d701-8aPo)
2021/02/11(木) 09:55:24.00ID:fpayl2mg0 dartってtypeからインスタンス生成できないのな。
動的型付け言語だからか?
動的型付け言語だからか?
117デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/11(木) 10:28:07.74ID:QNzWdO780118デフォルトの名無しさん (ワッチョイ 3761-XJ0Q)
2021/02/11(木) 10:42:29.79ID:4v/gNN1w0119デフォルトの名無しさん (ワッチョイ d701-kh8G)
2021/02/11(木) 10:49:59.34ID:QNzWdO780 JSONの内側にある配列はList作ってやらなきゃならないのが地味にめんどくさい、Swiftよりは楽だけど。
NULL安全で同じくらいめんどくさくなるのか・・
NULL安全で同じくらいめんどくさくなるのか・・
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか… [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 中国国営メディア「沖縄は日本ではない」…★7 [BFU★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 高市早苗、岸田政権(当時)に「台湾有事は日本の有事か」という質問をしていた [175344491]
- 【悲報】高市早苗周辺「支持層が離れるので今更発言を撤回できない」 [935793931]
- 【感動】山上徹也「頑張れ、お兄ちゃんが守ってやる」妹へのメールが公開
- 青椒肉絲、牛肉ではなく豚肉を使うのが本物だった
- 【悲報】中国→日本行きの航空チケット、高市有事の影響で50万人分がキャンセルされる [834922174]
