Flutterやろうよ!!! 2

■ このスレッドは過去ログ倉庫に格納されています
2021/01/30(土) 12:22:39.97ID:4Fw02M/h0
ようこそ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
2021/02/04(木) 13:48:42.81ID:gjWC+ihb0
>>25
不具合の原因を聞く限り多分クラウド側まで接触通知が上がってなかったんじゃないかな?
一般メディアでは通知がされないって分かりやすい結果だけが報道されてるけど。

どの端末とどの端末がいつ近接してたかってのはコロナ確定前にも情報収集する必要があるはずなので、Androidだけ極端にデータが少ないってすぐに気付きそうなもんだがねぇ。何やってるんだか。
28デフォルトの名無しさん (ワッチョイ 7d01-cVNB)
垢版 |
2021/02/04(木) 15:17:37.66ID:ooZBaTlj0
>>26
ほとんどのプラグインをそのまま使って8アプリリリースしたよ。
規模的には中規模組込みアプリから中規模ECアプリまで。
2021/02/04(木) 19:29:04.26ID:RAyD64IW0
>>25
サーバーで濃厚接触判定なんかしないだろ。
プライバシー情報を極力取得しないんだから陽性判定された人が自分でCOCOAに陽性登録するとスマホ内で生成されたユニークIDがサーバーに保存されるだけ。
陽性判定者のユニークIDをCOCOA利用者全員に配布してクライアントの中で判定すればいいんだし。
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しにいくの?
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で省略可)

バイナリサイズが全く違って起動も早くなるのだが、動かないのでは話にならん。
2021/02/04(木) 20:24:42.42ID:gjWC+ihb0
>>29
さすがにそれはないんじゃないかな?
一定時間以上の近接IDがお互いに紐付いてサーバにストアされ、後で陽性登録されたIDに紐付いたIDのスマホに通知されるって事じゃない?
それほど難しい話ではない。不具合は近接したかどうかの判定。
BTのビーコン使うので近接判定はADV_NONCONN_INDのRSSIベースだろうけどそのへんがiOSとAndroidで扱いが違ったんだろうね。
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だとあるの?
36デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/05(金) 12:17:38.02ID:sQbQrry70
>>32
警告とか全く出ないんだがw
debugで動いてreleaseで動かないものなんか無いよ
例えば何?
37デフォルトの名無しさん (ワッチョイ 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」で最新に
更新すると、○○は非推奨で次のリリースで廃止予定ってな警告メッセージが沢山
出るようになる。
38デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/05(金) 15:03:29.18ID:sQbQrry70
>>37
stableでしかビルドしてないからなぁ・・Null安全にそれほどメリット感じてないし・・
Null安全がstableに来るの3/3あたりだっけ?
2021/02/05(金) 19:28:24.19ID:FeqoYHE1F
null safety言語使ったことないだけだろ
40デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/05(金) 20:19:16.88ID:sQbQrry70
swift1からやってるけど・・
2021/02/06(土) 01:33:12.54ID:PZ9Rc0Bf0
みんなflutterのためだけにdart覚えたの?
42デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/06(土) 05:10:52.28ID:pJAT2BWO0
そうだよ。ってかJSとか知ってればdartなんか覚えるの簡単
2021/02/06(土) 06:11:47.13ID:0l8rGy4F0
別にDartつっても特別変な構文があるわけでもないし言語習得にはほとんど苦労しなかったな。
その代わり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++で普通にできることができなくて、なんかイラつく。
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文の条件分岐を入れようとしたら、
エラーになった。
47デフォルトの名無しさん (ワッチョイ 9701-95wZ)
垢版 |
2021/02/06(土) 15:42:59.81ID:F0c/bXFP0
>>45
アクセス部分はそうだけど、知りたいのは、widgets[]の初期化部分なんだが?
48デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/06(土) 15:50:37.78ID:pJAT2BWO0
>>47
ItemBuilderは1つでいい。例えば、
widgets[0] = Column→list
widgets[1] = Column→icon
49デフォルトの名無しさん (ワッチョイ 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]);
);
};

てな書き方でいけるんだっけ?
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だけにしてるけど、実際はもっと複雑。
53デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/06(土) 16:16:14.01ID:pJAT2BWO0
>>52
だから、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を返す関数配列にしたいってこと。
56デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/06(土) 16:44:34.07ID:pJAT2BWO0
>>55
ならsetStateする前にListViewしたいwidget全要素作れば?
57デフォルトの名無しさん (ワッチョイ 9701-95wZ)
垢版 |
2021/02/06(土) 16:47:35.00ID:F0c/bXFP0
>>54
だから、widgets[][]を、どこで初期化するの?
中身はファイル名の一覧とか可変が前提だよ。

それと、使うWidgetは、表示スタイルによってどれか1つで済むのに、二重のfor
ループを廻して、毎回全部を作りなおすのか? 間違いではないが、糞プログラマ
認定だな。
58デフォルトの名無しさん (ワッチョイ 9701-95wZ)
垢版 |
2021/02/06(土) 16:49:29.40ID:F0c/bXFP0
>>56
なぜ、ListView.builderを使うのか、理解していないことが良く判った。
59デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/06(土) 17:03:39.75ID:pJAT2BWO0
>>57
いや、 ListViewだって可変なら毎回作るんだよ。
でも2重全部は作らない。どちらか。
どっちがクソプロだよ。もう教えてやんねーよクズ
60デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/06(土) 17:12:16.78ID:pJAT2BWO0
> だから、widgets[][]を、どこで初期化するの?
setStateする前だって言ってんだろ。

var list = []; って知ってる?全部作らなくていいの分かる?
その態度で、ど素人かよ・・向いてないから辞めな
2021/02/06(土) 17:22:25.88ID:MVtJKBn70
>>49
別にこれでよくね?
IndexedWidgetBuilder関数自体をswitchで返すようにしてListView.Builderの記述を一つにするとか細かいのはあるが

つか、widgets[]何かいらんだろ?
2021/02/06(土) 17:25:30.28ID:MVtJKBn70
今回はListView同士だが、表示モードでリスト表示やグリッド表示切り替えたりする機能じ実装したいんだろ?
2021/02/06(土) 17:28:26.46ID:MVtJKBn70
ごめん>>55とか見てなかった
64デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/06(土) 17:31:01.68ID:pJAT2BWO0
そもそもitemBuilderに渡せるクロージャの型は決まってるのに、そこでやりたがろうとするのか間違い。
returnする中身を_listModeで変えりゃいいだけ。
2021/02/06(土) 17:36:00.31ID:MVtJKBn70
とりあえず、>>55はdartで十分スマートだから問題ないといっておく

Widgetを返す関数配列とか余計なことすると一人よがりのプログラムになりそうとだけ言っておく

仮にそこまでやって何の利点があるのか知らんが
66デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/06(土) 17:43:49.14ID:pJAT2BWO0
もしもlistの件数が多いなら、flutterはreusableCellみたいな機構/考え方がないから、ScrollControllerでスクロールを監視して、止まったら実widgetを生成するとかの施策を作る方がよっぽどメリットある。
さらにそんな感じのListViewが複数あるならリビルト抑制のためにInheritedModel化しなければならない。
67デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/06(土) 19:10:30.57ID:pJAT2BWO0
糞プログラマwのオレが余計なアドバイスしちゃったかなw
まぁ3年くらいは諦めずに続けてみる事だwww
2021/02/06(土) 19:29:48.12ID:0l8rGy4F0
>>55
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); } ),

てな感じで更新を掛ける。
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によって切り替えよう。
72デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/07(日) 00:02:01.56ID:AkpxQPsh0
どうしてもitemBuilderを切り替えたいなら、
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, で無制限スクロールできる。
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
77デフォルトの名無しさん (ワッチョイ 9701-95wZ)
垢版 |
2021/02/07(日) 01:38:30.26ID:5iRjnGor0
>>74-76
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センス無いよ
2021/02/07(日) 17:16:20.79ID:NoxA0gm+0
休日って感じでええな
2021/02/07(日) 17:37:11.35ID:VQW6QCV3M
Dart「私のために争わないで!」
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);
っていろんなサンプルコードにおまじないのように存在しますが
何の意味があるコードでしょうか?
2021/02/08(月) 22:16:34.05ID:U8Md53kEM
それがコンストラクタであることはわかる?
2021/02/08(月) 22:23:55.78ID:fXU526Wm0
わかりません><
2021/02/08(月) 22:50:39.51ID:Vrbohkxj0
>>84
ほかの言語の基礎知識なしに
Dart/Flutterから始めるからそうなるんじゃないかね
2021/02/09(火) 00:49:39.26ID:bUho71ueM
いつみてもnamedの書き方がキモいな
💩dartは
2021/02/09(火) 05:41:27.49ID:4s6aj3EG0
>>82
継承元のコンストラクタにkeyを渡してるだけ。
2021/02/09(火) 08:27:56.90ID:GPf+a2VOd
そもそもkeyて何に使うの?
89デフォルトの名無しさん (スフッ Sdbf-smwP)
垢版 |
2021/02/09(火) 11:09:42.19ID:QUiKVEcEd
>>85
それは何でも同じやん。
2021/02/09(火) 11:25:03.68ID:nKesl+r+0
>>89
同じではないぞ
Dart使ってる人はほかの言語をマスターしてる人がほとんどだろう
Dartは入門のサイトや書籍も少ない
Dartは初心者が最初にやるべき言語ではない
2021/02/09(火) 11:50:18.06ID:4s6aj3EG0
>>88
俺はこの動画見て理解した
https://api.flutter.dev/flutter/foundation/Key-class.html
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するとか。
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)を指定した、デバッグ実行してみた。
96デフォルトの名無しさん (ワッチョイ 9701-95wZ)
垢版 |
2021/02/09(火) 18:11:38.83ID:KQnFnSaF0
案の定、自分の想像通り全てのアイテムは作成していなかった。 ただ、なぜか
判らないが、リスト表示範囲にピッタリ収まる数より少し余分に呼ばれていた。

どうやら、ListViewの実際の表示サイズではなく、AppBar等を含めたディス
プレイの表示ピクセル数に収まるアイテム数のWidgetを作成しているっぽい。

また、スクロール操作した際も、上/下方向とも移動した行数の分だけ呼ばれ、
スクロール前後で範囲から外れない分はおそらく保持されたままで呼ばれなかった。

「ITセンス無い」なんて言っちゃう時点で、いつもの意識高い系だと思ったが、
これで(ワッチョイ d701-kh8G) が、フカシFlutter野郎であると証明できた。

さぁ、キミも手元のFlutter環境で、今すぐ確認してみよう!

プライドだけ高いお馬鹿センセイの弟子にならないよう、くれぐれもチューイせよ!
97デフォルトの名無しさん (ワッチョイ 9701-6qHG)
垢版 |
2021/02/09(火) 18:26:56.12ID:qUmf+U4D0
仮想リスト・テクノロジー™では?
2021/02/09(火) 19:08:59.58ID:qBw0aS8i0
そりゃすぐにスクロール初めてもフレーム落ちしないように余剰に前後キャッシュするだろうよ
AndroidのListViewもキャッシュするよ
2021/02/09(火) 19:26:05.29ID:4s6aj3EG0
>>55
そういや俺も初心者の頃、スキン切り替え実装するために同じようにwidget配列作って失敗したなと思い出して見直したら、あなたと同じようにbuild内で普通にswitch分岐してたわ。
今作るならインスタンス配列じゃなくてtype配列を作ってその型を生成するように実装するかな?もちろん配列のそれぞれのclassは同じclassから継承しておいて。
dartもtypeからインスタンス生成できるとは思うんだけどやったことはないので具体的なやり方は知らん。
2021/02/09(火) 19:35:55.01ID:4s6aj3EG0
>>99
あ、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件めくらいでクラッシュするから
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に作成される
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は全部破棄される
2021/02/09(火) 22:35:48.60ID:iPD7ZJPG0
で、その後に
Destruction mitigation
で続きがあって、ListView.BuilderのaddAutomaticKeepAlivesがtrueだと保持されるの??
ここら辺はまだよく知らねw
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:KQnFnSaF0
>>103-105
そこは読んでないけど、まぁ普通にそんな実装だろうと思ってました。
英語が読めるか知らんけど、真正馬鹿の ワッチョイ d701-kh8G に教えてあげて。

>>101-102
>>95を書く前に、念のため テキスト 10000件で試してるけど、落ちなかったよ?

そもそもBuildの度に全てのWidgetを作り直して _widget[iindex]; なんてやって
たら、リソース不足以前に、要素の数だけコントラクタが走るタイムラグが無視
できないってことすら想像がつかんのかなぁ?

もしかして、スクリプト書きのWeb屋が、自称プロFlutterか?
109デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/09(火) 23:42:06.68ID:ANc0E1ay0
>>108
自演してないで消えろよハゲ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
2021/02/10(水) 00:12:19.53ID:y0GPcK+u0
君たち面白いねwwww
2021/02/10(水) 08:13:01.49ID:bUgfldyu0
だからいっただろう
強制コテハンのワッチョイなんてつけるから荒れる
管理者いないんだから荒れるに決まってる
114デフォルトの名無しさん (ワッチョイ 3714-smwP)
垢版 |
2021/02/10(水) 22:04:43.15ID:EZBazwT90
>>108
自称プロでも何でもいいだろ、5chなんだから。
5ch で何を求めてんの。
2021/02/10(水) 22:33:17.28ID:CSG59Cdu0
Dart 3.0で実装されるnull安全に向けて
変数の初期値を入れる作業をしますね
2021/02/11(木) 09:55:24.00ID:fpayl2mg0
dartってtypeからインスタンス生成できないのな。
動的型付け言語だからか?
117デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/11(木) 10:28:07.74ID:QNzWdO780
>>108
お前ってさー質問しておいてその態度はなに?
人として即死しろよ。
118デフォルトの名無しさん (ワッチョイ 3761-XJ0Q)
垢版 |
2021/02/11(木) 10:42:29.79ID:4v/gNN1w0
>>116
むしろ、それができていいことあるの?
Javaや.NETなら、たとえばJSONを扱うときにそのパターンを使わざるを得ないけど、ただただめんどくさい。
119デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/11(木) 10:49:59.34ID:QNzWdO780
JSONの内側にある配列はList作ってやらなきゃならないのが地味にめんどくさい、Swiftよりは楽だけど。
NULL安全で同じくらいめんどくさくなるのか・・
2021/02/11(木) 10:54:11.92ID:fpayl2mg0
>>118
>>55をswitch使わず配列でやろうとしたらtypeからインスタンス生成する方法しか思い浮かばなかった。
121デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/11(木) 11:37:13.59ID:QNzWdO780
低予算で済ませたいならifiのポタアンhip-dacとかおすすめ。HD660SでもHD800Sでもバランス接続問題ない。
音質もそこそこ。
122デフォルトの名無しさん (ワッチョイ d701-kh8G)
垢版 |
2021/02/11(木) 11:37:28.26ID:QNzWdO780
間違えた
2021/02/11(木) 19:11:39.05ID:M8I5FK680
>>116
dartにmirrorsパッケージあるやろ
これじゃね
2021/02/14(日) 19:37:19.38ID:eIu+AeRF0
providerに比べてriverpod使いにくいね
データを複数持てないんだもん
1データ1グローバル変数みたいなの気持ち悪い
2021/02/14(日) 19:37:54.22ID:yNj7QpIpM
両方💩
126デフォルトの名無しさん (ワッチョイ df01-5+RR)
垢版 |
2021/02/14(日) 19:43:22.27ID:5FBJEFx+0
providerは使いやすい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況