Flutterやろうよ!!! 4

■ このスレッドは過去ログ倉庫に格納されています
2022/03/28(月) 09:25:37.90ID:+qBipumoM
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512

ようこそFlutter野郎どもよ!!!
軽い開発環境でモバイルアプリ開発ができるなんて最高じゃねえか
AndroidもiOSも両方行ける、まさに漢のためのツールだな

https://flutter.dev/

前スレ
Flutterやろうよ!!! 3
https://mevius.5ch.net/test/read.cgi/tech/1628421492/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/07/09(土) 02:05:48.77ID:TNWK2vc80
>>234
先に>>225か本人か答えろよ
236デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 02:06:22.72ID:+iEZX8QHa
>>233
知ってる癖に知らないふりをするなよww

225本人だが、知ってるふりて何だよ?誰が何を知らないふりしてんだ?
237デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 02:10:27.29ID:+iEZX8QHa
知ってるふり→知らないふり。

当たり前の話が冷やかし?
ちょっと何言ってるのかわかんない笑
238デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 02:17:18.79ID:+iEZX8QHa
>>235
いや、実際おまえがflutter使うかどうかなんて義務でも何でもないのに加えて、自分でAndroidが神viewと言ってたんだろ?

「神view使えば良いのでは?」のどこが冷やかしなの?何なんだこいつは。
2022/07/09(土) 02:17:25.39ID:TNWK2vc80
じゃあ、答えるけど
答えはもう先に書いたけど君が理解できないだけなんだよ
理解できないってより本人なんだから知らないふりかww

>当たり前の話して冷やかしてるんだよ

じゃあ、お前誰かに「フレームワークのーーがバグってるんだよねー」とか言われて、
即答で「自分で治すか、他の使えば」って当たり前の極論を
リアルで言ってみろよwwwwww

普通はなんだこいつって思われるからwww
240デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 02:25:51.80ID:+iEZX8QHa
>>239
実際バグってるなら同感するけど、悪いけどおまえが示した範囲に明確なバグなんか無いから笑
おまえの不勉強なんか知ったこっちゃないし、気に入らないなら他のもの使う以外何があんだよ?

リアルでおまえみたいレベルと絡みたくないわ笑
2022/07/09(土) 02:26:44.98ID:TNWK2vc80
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
242デフォルトの名無しさん (スププ Sd43-Z8ZC)
垢版 |
2022/07/09(土) 02:39:17.11ID:cDalp+idd
>>241
いや、リアルでおまえみたいに文句ばっか言って何のメリットがあんだよガキが笑
だから普通じゃないならAndroid使えよ。
当たり前で冷やかしとか言ったら侮辱されちゃうよボク?笑
2022/07/09(土) 02:46:38.80ID:TNWK2vc80
>>242
ほら、リアルで言ってみろよwwwwwwwww

ガキって>>218の最初から最後まで冷やかし目的のお前の口から出るって
どんな冗談よwwww

ほら、リアルで言ってみろよwwwwwwwww

ほら、リアルで言ってみろよwwwwwwwww
244デフォルトの名無しさん (スププ Sd43-Z8ZC)
垢版 |
2022/07/09(土) 02:51:43.96ID:cDalp+idd
>>243
マジ何がしたいの?
Android使えばいいじゃん。
flutter面倒臭いんだろ?
リアルで何を言うの?
頭大丈夫かまじで?
2022/07/09(土) 02:54:55.84ID:TNWK2vc80
>>244
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
246デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:01:04.70ID:+iEZX8QHa
>>245
あなたが幸せそうで私も幸せです。
2022/07/09(土) 03:02:19.90ID:TNWK2vc80
>>246
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
248デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:04:37.28ID:+iEZX8QHa
>>247
おめでとうございます。
2022/07/09(土) 03:05:33.92ID:TNWK2vc80
>>248
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
250デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:07:01.92ID:+iEZX8QHa
>>249
おめでとうございます。
2022/07/09(土) 03:07:57.39ID:TNWK2vc80
>>250
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
252デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:13:02.64ID:+iEZX8QHa
>>251
それは良かったです。
リアルで周りにおまえみたいなの居ないって笑
2022/07/09(土) 03:15:20.17ID:TNWK2vc80
>>252
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
254デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:19:16.41ID:+iEZX8QHa
>>253
誰に言うんだよ笑
コピペしかできないんだからガキよばわりされるだろ。
2022/07/09(土) 03:21:18.13ID:TNWK2vc80
>>254
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
256デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:23:21.27ID:+iEZX8QHa
暇人さんコピペよりAndroid頑張ろうね笑
イキって冷やかしよばわり要らないから、さようなら。
2022/07/09(土) 03:27:35.77ID:TNWK2vc80
>>256
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
258デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:33:51.61ID:+iEZX8QHa
>>257
まあflutterのあの程度を普通じゃないって言ってるんだから、Android使ったところで便利なスクロールくらいしか実装できないのは目に見えてるけどな。
2022/07/09(土) 03:36:58.12ID:TNWK2vc80
>>258
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
260デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:42:31.73ID:+iEZX8QHa
>>259
それおもしろいか?
コピペじゃなくてAndroidやらないと。
神viewなら使えるやろ?
261デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:43:22.55ID:+iEZX8QHa
>>260
神viewあって本当よかったよね笑
ボクでも使えるもんね。
2022/07/09(土) 03:43:48.32ID:TNWK2vc80
>>260
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
2022/07/09(土) 03:44:59.51ID:TNWK2vc80
>>261
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
264デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:47:02.98ID:+iEZX8QHa
>>263
2回コピペ投稿したよね。
ちゃんと同じ回数できたよね笑

神viewマジウケるよな笑
スクロールだけで勝負できるか?
2022/07/09(土) 03:47:46.79ID:TNWK2vc80
>>264
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
266デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:49:23.35ID:+iEZX8QHa
>>264
結局どのフレームワーク使おうが難しいしようとすれば難しくなるわけで。
コピペじゃあかんのやで?
2022/07/09(土) 03:50:27.19ID:TNWK2vc80
>>266
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
268デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:52:25.42ID:+iEZX8QHa
>>266
まあコピペと神viewだけでどこまでいけるか、やってみたら良いやないか?
時間はあるんだから笑
2022/07/09(土) 03:53:27.98ID:TNWK2vc80
>>268
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
270デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 03:55:45.64ID:+iEZX8QHa
>>269
まあ一人でやってください。
Androidスレでね笑
2022/07/09(土) 03:57:04.92ID:TNWK2vc80
>>270
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
272デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 04:15:07.54ID:+iEZX8QHa
結局キレられる理由も完全に意味不明で途中から話にならなかった笑
2022/07/09(土) 04:17:08.44ID:TNWK2vc80
>>272
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
274デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/09(土) 04:26:56.15ID:+iEZX8QHa
>>273
一晩かけてflutterのスクロールまわりが手に負えない自分のレベルを自己申告し続けるてすげーよな笑
それこそリアルで誰かに聞いてもらえよ笑
2022/07/09(土) 04:29:06.81ID:TNWK2vc80
>>274
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
2022/07/09(土) 05:59:43.48ID:phfbURN3a
こいつら何してんの…
2022/07/09(土) 08:09:17.64ID:fLTYygoN0
保守だろ
2022/07/09(土) 08:45:31.39ID:FO2FM1010
ホンモノ来てんじゃん草
279デフォルトの名無しさん (スププ Sd43-Z8ZC)
垢版 |
2022/07/09(土) 10:54:36.32ID:cDalp+idd
スクロールとはスライバーのこと?
だとしてもそこまで致命的なことか?
スクロールがあれだから他のフレームワークの方が良いですね、というのは聞いたことない。
os依存の機能で結局ネイティブコード書かないといけないから、みたいなのはあるけど。
2022/07/09(土) 13:09:48.07ID:SMAdLLkz0
スライバーって・・・・
スリバーな
281デフォルトの名無しさん (スププ Sd43-Z8ZC)
垢版 |
2022/07/09(土) 13:19:06.57ID:cDalp+idd
発音の指摘痛み入ります。
2022/07/09(土) 20:54:08.51ID:TsAgVdQO0
なんだ
スライバーじゃないのか
2022/07/09(土) 21:06:17.63ID:BwqUQNjHp
どっちも使われてるよ
JISはスライバーだからこっちのほうが主流かな
284デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
垢版 |
2022/07/10(日) 09:45:22.91ID:5dNamPela
当たり前のこと言われて逆ギレてマジ意味わからない
情報集めって言いながら結局コピペ連投
目障りだわーww
2022/07/10(日) 11:54:26.21ID:Ut0Ymv090
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
286デフォルトの名無しさん (スフッ Sd43-Z8ZC)
垢版 |
2022/07/10(日) 17:24:11.29ID:a4ePALazd
flutterスレに自動投稿ロボットを誕生させてしまい誠に申し訳ございませんでした。
287デフォルトの名無しさん (ブーイモ MM99-6d7N)
垢版 |
2022/07/10(日) 17:32:35.01ID:1hLKG9fCM
良かった。病気の子供はいないんだ。
2022/07/10(日) 18:21:36.81ID:Ut0Ymv090
これが普通と思ってるのかよ
お前くそウケるわwwwww

リアルで言ってみろよwwwwwwwwww
2022/07/10(日) 19:40:28.11ID:FmV9wIuC0
providerを使ったMVVM開発に挑戦しています。
画面が複数ある場合、簡単に作るとStatelessWidgetのviewとChangeNotifierのviewModelが画面数だけ出来る事になるかと思います。
その場合、どのviewのbuildメソッドにもChangeNotifierProvider()がある事になってしまうのですが、それはそういう物ですか?

個人的にbuildの中はなるべく階層を浅くしたほうがよいと思っていて
そこにChangeNotifierProvider()というメソッドを1階層入れる事に抵抗があるのですが
それは気にし過ぎだったりしますでしょうか
2022/07/10(日) 19:55:11.35ID:UkuUwsAl0
>>289
はい、何も間違っていません。flutterのStatefulは基本的に階層が深くなることを許容する必要があります。
rebuild範囲を局所化することはその都度1階層深くなることとほぼ同義と理解してもらって構いません。
もちろん同じコンテキストでrebuildされる同じWidgetは共通化するという前提です。
2022/07/10(日) 21:18:49.10ID:FmV9wIuC0
>>290
ありがとうございます。
認識を改めて精進します
2022/07/11(月) 05:41:09.79ID:mP4iOavH0
> ChangeNotifierProvider()というメソッド

???
293デフォルトの名無しさん (テテンテンテン MMcb-KLfl)
垢版 |
2022/07/11(月) 08:30:27.70ID:CgnuFyDWM
パソコンゲーが趣味で理系の山上徹也がflutterやってればなー
294デフォルトの名無しさん (アウアウウー Sa09-2HoA)
垢版 |
2022/07/11(月) 10:33:31.81ID:1W23UOpta
だれよ
2022/07/11(月) 12:38:02.80ID:O8zc2C880
今一番話題の人
2022/07/11(月) 16:16:25.65ID:auBqUmtR0
そうなんか
2022/07/26(火) 17:12:23.66ID:dYGJPrNW0
298デフォルトの名無しさん (ワッチョイ 695f-OMQZ)
垢版 |
2022/07/26(火) 22:42:06.13ID:dYGJPrNW0
おいおい
画像貼り付けようとしたら何か新しいタブで色々メッセージ書いてあって分からん。
ちゃんと存在してるURLやし。誰か助けて
299初心者です (ワッチョイ 695f-awC1)
垢版 |
2022/07/26(火) 23:00:45.36ID:0QnELkry0
超初心者ですすみません、、知恵袋のようなアプリを作りたいのですが、アドバイスいただけますでしょうか?各質問がホームに並んでいて、質問をクリックすると回答を書けるもしくは見れるようにしたいです。下記リンクにしたがい質問を並べた階層(ホームに該当)がつくれるかとおもいますが、質問の一つをクリックすると更にもう1段階、画面遷移して質問に対する回答が並ぶような階層を作る場合、どういった処理をすればよいでしょうか?方針や参考になる検索キーワードなどありましたら、ご教示いただけますと幸いです。
https://rightcode.co.jp/blog/information-technology/flutter-firebase-bulletin-board-app-make
300デフォルトの名無しさん (テテンテンテン MMeb-NnXs)
垢版 |
2022/07/26(火) 23:06:37.46ID:rlMnEWBsM
flutter大学入れ
2022/07/26(火) 23:12:27.63ID:aNuqzwoa0
もうちょっとピンポイントで質問してくれないとな..
302デフォルトの名無しさん (スフッ Sd33-r2Jd)
垢版 |
2022/07/27(水) 01:01:46.72ID:SqTl9Tcbd
階層て何すか?
stackみたいなこと?
ナビゲーションstack、みたいな?
そういうオレオレ用語はちょっと、、、
ねー。
303デフォルトの名無しさん (アウアウウー Sa5d-R4TS)
垢版 |
2022/07/27(水) 11:16:46.42ID:elZrgoJKa
オレオレ用語で仕様描くのは良くないぬ
2022/07/28(木) 01:26:46.49ID:kZAcDvsr0
なんもわかってないまま質問してるね
そんなんじゃ回答もらってもわかんないでしょ
ほとんど作ってもらってコピペしようとしてる?
超初心者の自覚があるなら超初心者向けの情報みて勉強しなよ
Flutterはそういうの公式で充実してるからさ
2022/07/28(木) 02:40:25.79ID:ZuspXXEK0
彼は答えが欲しいのではない
アプリが欲しいのさ
306デフォルトの名無しさん (テテンテンテン MMeb-NnXs)
垢版 |
2022/07/28(木) 08:43:02.32ID:dd+GJcbrM
ググレカス
307デフォルトの名無しさん (ワッチョイ 1301-U7jV)
垢版 |
2022/07/28(木) 18:45:25.40ID:2Rw/B+fk0
質問
XamarinでDJアプリ作ろうとしたんだけどレコードを動かしたときの動作でタップしている位置を取得することで角度によって再生逆再生みたいにしたいんだけどFlutterなら楽勝なの?
ザマリンだと結局レンダラーって言ってiOSとAndroid個別にプログラム書かないといけないみたい

https://i.imgur.com/BM04VVW.png
2022/07/28(木) 19:06:26.95ID:AOM66IHO0
>>307
Xamarinでレンダラ使って描画するレベルならFlutterなら共通化できるよ。
Flutterでプラグイン使わず共通化できないのは各種ペリフェラルとバックグラウンド動作ぐらい。
309デフォルトの名無しさん (オッペケ Sr85-U7jV)
垢版 |
2022/07/28(木) 19:07:41.33ID:Ee0GPQHDr
>>308
なるほど…
ならFlutter一回試してみようかな
サンクス
2022/07/28(木) 19:52:29.61ID:G5sGRUf40
>>309

https://i.imgur.com/YDzUOmh.jpg
2022/07/28(木) 21:35:33.51ID:Pq2AIR8P0
>>310
グロ
2022/08/02(火) 10:06:04.35ID:HdRf0/qx0
buildメソッド内で、子要素の高さをpx単位で知る方法ってありませんか。
例えば、child要素が100px以上なら折りたたみのアコーディオンを出して、未満ならそのまま表示する。みたいな事をしたいです

「ボタンを押した時に高さを取得する」なら、対象のwidgetにGlobalKeyを設定してcontextからどうにでも取れるのですが
画面表示時の最初のbuildメソッドの中で取得する事がしたいです。

WidgetsBinding.instance.addPostFrameCallback を使ってbuildの1フレーム後に高さを取得する事を試したのですが
それでもbuildメソッドの後なので一瞬見えてしまいます
特に高さが変わるとカクつきが発生するから目立ってしまう・・・
2022/08/02(火) 10:24:04.80ID:8jAs6gjU0
>>312
それは子要素がbuildされる前にその子要素自体の高さを予め知りたいってこと?
2022/08/02(火) 13:43:38.32ID:HdRf0/qx0
>>313
はい、子要素の高さが一定数より大きい時は拡縮ボタンを表示。それ未満の場合はそのまま表示。
という事をしようとしています。
2022/08/02(火) 14:23:10.77ID:TouO0DTh0
俺も同じことしてるけど、ただ、一瞬見えないように何かのWidgetでくるんで高さ求めてる

まぁカクつくのは別の問題だが
316デフォルトの名無しさん (ワッチョイ b190-Wndz)
垢版 |
2022/08/02(火) 14:34:26.77ID:TouO0DTh0
Visiblity,Opacity,Offstageとかそこら辺のWidgetだっけ?
2022/08/02(火) 14:53:26.36ID:mx7A804Ta
>>314
buildが終わらないとサイズが分からないのでbuild前にサイズを知ることはできません。
>>315が言うように一回目のbuild時にはStackか何かで前面を覆って隠しておき、サイズ確定後の二回目のbuild時に覆うのをやめるしかないと思います。
2022/08/03(水) 10:55:34.70ID:tx6+aymb0
RenderBoxを作りなさい
2022/08/08(月) 00:34:12.55ID:sRQZ4vBgd
Providerを使ったMVVMモデルの勉強をしているのですが、メソッドを実行するにはどうしたら良いでしょうか。

説明用のコードを作成しました。flutter 3.x 、provider 6.0.3 で動作確認をしています
1ファイルに詰め込みましたので、コピペで動きます。
https://pastebin.com/iLLWegxz


ボタン1を押すと画面上部の「VMから受信した値 x」の数字部分がインクリメントします。
ボタン2と3は押すとリストが上下にスクロールします。
https://i.imgur.com/5t03yFI.png

ボタン1を押した時はViewmodelの中身を書き換えてnotifyListeners()し、表示する側はConsumerで囲って中身を表示する
というもので、ここは問題ありません。

ボタン2と3は押した後S2A.scrollRequest メソッドを呼んでほしいのですが、それをMVVM的に正しくやる方法を教えて頂けますでしょうか。
現状はViewModelの中にvoid Function() anyFunction;の関数を定義して
使う側でanyFunction=(){xxx;} と関数をセットしているのですが、色々な記事を見てもこんな事している例が無く間違っている気がしてなりません。

https://i.imgur.com/vGZFuYy.png
https://i.imgur.com/4YghOu3.png

アプリのグローバル変数の領域にGlobalKeyを設置すれば、Globalkey経由でcontextを取得出来るのですが、
グローバル変数に値を設置するのはアンチパターンだと思いますし、MVVMの勉強なので今回は避けたいです。
320デフォルトの名無しさん (アウアウエー Sa23-3/wg)
垢版 |
2022/08/08(月) 23:03:15.94ID:7uJO41n7a
これでとりあえず動きました。それっぽいですかね?
ただMVVM的に正しくやる方法かどうかは、正しい方法のはっきりした定義が無いと何とも言いようがないような気がします。
そちらのコードでも別におかしいとも思わないですし、結局実験的なコードなので、それなら本人が良いと思えば何でも良いような。
結局仕様・方針がはっきり決まって初めて、「それに対してより効率的で無駄が無いアーキテクチャかどうか」という話がスタートするような気がします。

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

Future<void> main() async {
runApp(const AppMain());
}

class AppMain extends StatelessWidget {
const AppMain({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: S1(),
);
}
}
321デフォルトの名無しさん (アウアウエー Sa23-3/wg)
垢版 |
2022/08/08(月) 23:04:42.12ID:7uJO41n7a
class S1 extends StatelessWidget {
S1({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: ChangeNotifierProvider(
create: (context) => ViewModelTest(),
builder: (context, vm) => Column(
children: [
Expanded(child: S2A()),
S2B(),
],
),
),
);
}
}
322デフォルトの名無しさん (アウアウエー Sa23-3/wg)
垢版 |
2022/08/08(月) 23:06:31.02ID:7uJO41n7a
class S2A extends StatelessWidget {
S2A({Key? key,}) : super(key: key);

@override
Widget build(BuildContext context) {
/// ここでメソッドをviewModelに入れている事に強い違和感がある。
final ViewModelTest vm = context.read();
final keyList = vm.keyList;

return Column(
children: [
Consumer<ViewModelTest>(
builder: (context, vm, child) {
return Container(
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(color: Colors.grey, width: 1),
),
child: Text("VMから受信した値=${vm.counter}"),
);
},
),
323デフォルトの名無しさん (アウアウエー Sa23-3/wg)
垢版 |
2022/08/08(月) 23:07:04.38ID:7uJO41n7a
Expanded(
child: SingleChildScrollView(
child: Column(
children: List.generate(100, (index) {
return Container(
key: keyList[index],
width: double.infinity,
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(color: Colors.grey, width: 1),
),
child: Text("index ${index + 100}"),
);
}),
),
),
),
],
);
}
}
324デフォルトの名無しさん (アウアウエー Sa23-3/wg)
垢版 |
2022/08/08(月) 23:07:50.16ID:7uJO41n7a
class S2B extends StatelessWidget {
S2B({Key? key,}) : super(key: key);

@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
_button1(context);
},
child: const Text("1:VMに値+1")),
ElevatedButton(
onPressed: () {
_button2(context);
},
child: const Text("2:100に移動")),
ElevatedButton(
onPressed: () {
_button3(context);
},
child: const Text("3:199に移動")),
],
);
}
325デフォルトの名無しさん (アウアウエー Sa23-3/wg)
垢版 |
2022/08/08(月) 23:08:08.10ID:7uJO41n7a
void _button1(BuildContext context) {
final ViewModelTest vm = context.read();
vm.counter += 1;
}

void _button2(BuildContext context) {
final ViewModelTest vm = context.read();
vm.scrollRequest(100,);
}

void _button3(BuildContext context) {
final ViewModelTest vm = context.read();
vm.scrollRequest(199,);
}
}
326デフォルトの名無しさん (アウアウエー Sa23-3/wg)
垢版 |
2022/08/08(月) 23:08:35.92ID:7uJO41n7a
class ViewModelTest extends ChangeNotifier {
int get counter => _counter;
int _counter = 0;

final List<GlobalKey> _keyList = List.generate(100, (index) => GlobalKey()).toList();
List<GlobalKey> get keyList => _keyList;

set counter(int value) {
_counter = value;
notifyListeners();
}

scrollRequest(int scrollIndex) {
//this.scrollRequestCallback(scrollIndex);
Scrollable.ensureVisible(keyList[scrollIndex - 100].currentContext!,
duration: const Duration(milliseconds: 300),
curve: Curves.easeOut,
alignment: 0.5,
alignmentPolicy: ScrollPositionAlignmentPolicy.explicit);
}
}
2022/08/08(月) 23:25:24.19ID:1TtsycsU0
MVVM的にはViewModelはView依存しちゃだめだから、そこら辺はViewModelから追い出さないと
Scrollable.ensureVisibleっておもいっきりViewのメソッドじゃないのか?
2022/08/08(月) 23:34:54.06ID:kXG/j3j10
どっちのイベントもnotifyで通知すればいいじゃない
329デフォルトの名無しさん (ワッチョイ b190-HX2K)
垢版 |
2022/08/08(月) 23:40:23.05ID:1TtsycsU0
ViewModelにcounterと同じようにスクロール位置を表す変数を用意して、それを変更してnotifyListenersする

View側ではその変数の変更を監視して、変わったらスクロールするメソッドを呼ぶ。initStateだか、初期化するときにViewModelを監視してスクロールさせるコードを仕込む(ここはProvider使ったことないからなようわからんので自分で)
2022/08/08(月) 23:57:08.05ID:1TtsycsU0
というか、>>319のやり方でもいいと思うよ
理想は何でもかんでも宣言的に書けるのが理想だが、現実は今回のスクロール見たく命令的にしかできないのもあって
よく、元祖MVVMのWPFでもダイアログをどうだすか見たいな問題があってその場合、>>319ようなやり方もあったりするし
2022/08/09(火) 06:13:57.04ID:wrWGer3C0
ちゃんとしたMVVMになってなくても、コードがきちんと整理されていれば何も問題ないな
2022/08/09(火) 06:19:20.79ID:wrWGer3C0
>>329
自分もパッと思いつくのはこの設計
2022/08/09(火) 06:20:31.25ID:wrWGer3C0
あー、でも再描画の時に質問者の想定通りの動作をするかはちょっと分かんないなあ
2022/08/09(火) 08:57:08.88ID:aSkVZgU00
1 controllerで操作できるウィジェットを作る(StatefulWidget)
 Scrollable.ensureVisibleはそこに内包
2 ボタンを押した時にcontroller.scrollToItem(100)とか呼ぶ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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