!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
探検
Flutterやろうよ!!! 4
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウクー MMe3-IDr3)
2022/03/28(月) 09:25:37.90ID:+qBipumoM252デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 03:13:02.64ID:+iEZX8QHa253デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 03:15:20.17ID:TNWK2vc80254デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 03:19:16.41ID:+iEZX8QHa255デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 03:21:18.13ID:TNWK2vc80256デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 03:23:21.27ID:+iEZX8QHa 暇人さんコピペよりAndroid頑張ろうね笑
イキって冷やかしよばわり要らないから、さようなら。
イキって冷やかしよばわり要らないから、さようなら。
257デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 03:27:35.77ID:TNWK2vc80258デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 03:33:51.61ID:+iEZX8QHa >>257
まあflutterのあの程度を普通じゃないって言ってるんだから、Android使ったところで便利なスクロールくらいしか実装できないのは目に見えてるけどな。
まあflutterのあの程度を普通じゃないって言ってるんだから、Android使ったところで便利なスクロールくらいしか実装できないのは目に見えてるけどな。
259デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 03:36:58.12ID:TNWK2vc80260デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 03:42:31.73ID:+iEZX8QHa261デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 03:43:22.55ID:+iEZX8QHa262デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 03:43:48.32ID:TNWK2vc80263デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 03:44:59.51ID:TNWK2vc80264デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 03:47:02.98ID:+iEZX8QHa265デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 03:47:46.79ID:TNWK2vc80266デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 03:49:23.35ID:+iEZX8QHa267デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 03:50:27.19ID:TNWK2vc80268デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 03:52:25.42ID:+iEZX8QHa269デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 03:53:27.98ID:TNWK2vc80270デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 03:55:45.64ID:+iEZX8QHa271デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 03:57:04.92ID:TNWK2vc80272デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 04:15:07.54ID:+iEZX8QHa 結局キレられる理由も完全に意味不明で途中から話にならなかった笑
273デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 04:17:08.44ID:TNWK2vc80274デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/09(土) 04:26:56.15ID:+iEZX8QHa275デフォルトの名無しさん (ワッチョイ 2390-xeOV)
2022/07/09(土) 04:29:06.81ID:TNWK2vc80276デフォルトの名無しさん (アウアウウー Sa09-DGD5)
2022/07/09(土) 05:59:43.48ID:phfbURN3a こいつら何してんの…
277デフォルトの名無しさん (ワッチョイ a57d-jMZS)
2022/07/09(土) 08:09:17.64ID:fLTYygoN0 保守だろ
278デフォルトの名無しさん (ワッチョイ 8d2c-Nev3)
2022/07/09(土) 08:45:31.39ID:FO2FM1010 ホンモノ来てんじゃん草
279デフォルトの名無しさん (スププ Sd43-Z8ZC)
2022/07/09(土) 10:54:36.32ID:cDalp+idd スクロールとはスライバーのこと?
だとしてもそこまで致命的なことか?
スクロールがあれだから他のフレームワークの方が良いですね、というのは聞いたことない。
os依存の機能で結局ネイティブコード書かないといけないから、みたいなのはあるけど。
だとしてもそこまで致命的なことか?
スクロールがあれだから他のフレームワークの方が良いですね、というのは聞いたことない。
os依存の機能で結局ネイティブコード書かないといけないから、みたいなのはあるけど。
280デフォルトの名無しさん (ワッチョイ 232f-UQ1h)
2022/07/09(土) 13:09:48.07ID:SMAdLLkz0 スライバーって・・・・
スリバーな
スリバーな
281デフォルトの名無しさん (スププ Sd43-Z8ZC)
2022/07/09(土) 13:19:06.57ID:cDalp+idd 発音の指摘痛み入ります。
282デフォルトの名無しさん (ワッチョイ 2342-lTRq)
2022/07/09(土) 20:54:08.51ID:TsAgVdQO0 なんだ
スライバーじゃないのか
スライバーじゃないのか
283デフォルトの名無しさん (ササクッテロラ Spa1-KG4v)
2022/07/09(土) 21:06:17.63ID:BwqUQNjHp どっちも使われてるよ
JISはスライバーだからこっちのほうが主流かな
JISはスライバーだからこっちのほうが主流かな
284デフォルトの名無しさん (アウアウエー Sa13-Z8ZC)
2022/07/10(日) 09:45:22.91ID:5dNamPela 当たり前のこと言われて逆ギレてマジ意味わからない
情報集めって言いながら結局コピペ連投
目障りだわーww
情報集めって言いながら結局コピペ連投
目障りだわーww
285デフォルトの名無しさん (ワッチョイ 2390-/tfT)
2022/07/10(日) 11:54:26.21ID:Ut0Ymv090 これが普通と思ってるのかよ
お前くそウケるわwwwww
リアルで言ってみろよwwwwwwwwww
お前くそウケるわ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 良かった。病気の子供はいないんだ。
288デフォルトの名無しさん (ワッチョイ 2390-/tfT)
2022/07/10(日) 18:21:36.81ID:Ut0Ymv090 これが普通と思ってるのかよ
お前くそウケるわwwwww
リアルで言ってみろよwwwwwwwwww
お前くそウケるわwwwww
リアルで言ってみろよwwwwwwwwww
289デフォルトの名無しさん (ワッチョイ 03bd-2HoA)
2022/07/10(日) 19:40:28.11ID:FmV9wIuC0 providerを使ったMVVM開発に挑戦しています。
画面が複数ある場合、簡単に作るとStatelessWidgetのviewとChangeNotifierのviewModelが画面数だけ出来る事になるかと思います。
その場合、どのviewのbuildメソッドにもChangeNotifierProvider()がある事になってしまうのですが、それはそういう物ですか?
個人的にbuildの中はなるべく階層を浅くしたほうがよいと思っていて
そこにChangeNotifierProvider()というメソッドを1階層入れる事に抵抗があるのですが
それは気にし過ぎだったりしますでしょうか
画面が複数ある場合、簡単に作るとStatelessWidgetのviewとChangeNotifierのviewModelが画面数だけ出来る事になるかと思います。
その場合、どのviewのbuildメソッドにもChangeNotifierProvider()がある事になってしまうのですが、それはそういう物ですか?
個人的にbuildの中はなるべく階層を浅くしたほうがよいと思っていて
そこにChangeNotifierProvider()というメソッドを1階層入れる事に抵抗があるのですが
それは気にし過ぎだったりしますでしょうか
290デフォルトの名無しさん (ワッチョイ 0501-uJ+V)
2022/07/10(日) 19:55:11.35ID:UkuUwsAl0 >>289
はい、何も間違っていません。flutterのStatefulは基本的に階層が深くなることを許容する必要があります。
rebuild範囲を局所化することはその都度1階層深くなることとほぼ同義と理解してもらって構いません。
もちろん同じコンテキストでrebuildされる同じWidgetは共通化するという前提です。
はい、何も間違っていません。flutterのStatefulは基本的に階層が深くなることを許容する必要があります。
rebuild範囲を局所化することはその都度1階層深くなることとほぼ同義と理解してもらって構いません。
もちろん同じコンテキストでrebuildされる同じWidgetは共通化するという前提です。
291デフォルトの名無しさん (ワッチョイ 03bd-2HoA)
2022/07/10(日) 21:18:49.10ID:FmV9wIuC0292デフォルトの名無しさん (ワッチョイ 232f-UQ1h)
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 だれよ
295デフォルトの名無しさん (ワッチョイ 2342-lTRq)
2022/07/11(月) 12:38:02.80ID:O8zc2C880 今一番話題の人
296デフォルトの名無しさん (ワッチョイ d501-CX/0)
2022/07/11(月) 16:16:25.65ID:auBqUmtR0 そうなんか
297デフォルトの名無しさん (ワッチョイ 695f-Ecv2)
2022/07/26(火) 17:12:23.66ID:dYGJPrNW0 ほ
298デフォルトの名無しさん (ワッチョイ 695f-OMQZ)
2022/07/26(火) 22:42:06.13ID:dYGJPrNW0 おいおい
画像貼り付けようとしたら何か新しいタブで色々メッセージ書いてあって分からん。
ちゃんと存在してるURLやし。誰か助けて
画像貼り付けようとしたら何か新しいタブで色々メッセージ書いてあって分からん。
ちゃんと存在してる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
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大学入れ
301デフォルトの名無しさん (ワッチョイ 1390-lyDi)
2022/07/26(火) 23:12:27.63ID:aNuqzwoa0 もうちょっとピンポイントで質問してくれないとな..
302デフォルトの名無しさん (スフッ Sd33-r2Jd)
2022/07/27(水) 01:01:46.72ID:SqTl9Tcbd 階層て何すか?
stackみたいなこと?
ナビゲーションstack、みたいな?
そういうオレオレ用語はちょっと、、、
ねー。
stackみたいなこと?
ナビゲーションstack、みたいな?
そういうオレオレ用語はちょっと、、、
ねー。
303デフォルトの名無しさん (アウアウウー Sa5d-R4TS)
2022/07/27(水) 11:16:46.42ID:elZrgoJKa オレオレ用語で仕様描くのは良くないぬ
304デフォルトの名無しさん (ワッチョイ b92f-a243)
2022/07/28(木) 01:26:46.49ID:kZAcDvsr0 なんもわかってないまま質問してるね
そんなんじゃ回答もらってもわかんないでしょ
ほとんど作ってもらってコピペしようとしてる?
超初心者の自覚があるなら超初心者向けの情報みて勉強しなよ
Flutterはそういうの公式で充実してるからさ
そんなんじゃ回答もらってもわかんないでしょ
ほとんど作ってもらってコピペしようとしてる?
超初心者の自覚があるなら超初心者向けの情報みて勉強しなよ
Flutterはそういうの公式で充実してるからさ
305デフォルトの名無しさん (ワッチョイ 8110-cs1/)
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
XamarinでDJアプリ作ろうとしたんだけどレコードを動かしたときの動作でタップしている位置を取得することで角度によって再生逆再生みたいにしたいんだけどFlutterなら楽勝なの?
ザマリンだと結局レンダラーって言ってiOSとAndroid個別にプログラム書かないといけないみたい
https://i.imgur.com/BM04VVW.png
308デフォルトの名無しさん (ワッチョイ d901-37+K)
2022/07/28(木) 19:06:26.95ID:AOM66IHO0309デフォルトの名無しさん (オッペケ Sr85-U7jV)
2022/07/28(木) 19:07:41.33ID:Ee0GPQHDr310デフォルトの名無しさん (ワッチョイ a959-1HOL)
2022/07/28(木) 19:52:29.61ID:G5sGRUf40311デフォルトの名無しさん (ワッチョイ a9ad-Y/M3)
2022/07/28(木) 21:35:33.51ID:Pq2AIR8P0 >>310
グロ
グロ
312デフォルトの名無しさん (ワッチョイ 4abd-G1eK)
2022/08/02(火) 10:06:04.35ID:HdRf0/qx0 buildメソッド内で、子要素の高さをpx単位で知る方法ってありませんか。
例えば、child要素が100px以上なら折りたたみのアコーディオンを出して、未満ならそのまま表示する。みたいな事をしたいです
「ボタンを押した時に高さを取得する」なら、対象のwidgetにGlobalKeyを設定してcontextからどうにでも取れるのですが
画面表示時の最初のbuildメソッドの中で取得する事がしたいです。
WidgetsBinding.instance.addPostFrameCallback を使ってbuildの1フレーム後に高さを取得する事を試したのですが
それでもbuildメソッドの後なので一瞬見えてしまいます
特に高さが変わるとカクつきが発生するから目立ってしまう・・・
例えば、child要素が100px以上なら折りたたみのアコーディオンを出して、未満ならそのまま表示する。みたいな事をしたいです
「ボタンを押した時に高さを取得する」なら、対象のwidgetにGlobalKeyを設定してcontextからどうにでも取れるのですが
画面表示時の最初のbuildメソッドの中で取得する事がしたいです。
WidgetsBinding.instance.addPostFrameCallback を使ってbuildの1フレーム後に高さを取得する事を試したのですが
それでもbuildメソッドの後なので一瞬見えてしまいます
特に高さが変わるとカクつきが発生するから目立ってしまう・・・
313デフォルトの名無しさん (ワッチョイ 6501-JYI4)
2022/08/02(火) 10:24:04.80ID:8jAs6gjU0 >>312
それは子要素がbuildされる前にその子要素自体の高さを予め知りたいってこと?
それは子要素がbuildされる前にその子要素自体の高さを予め知りたいってこと?
314デフォルトの名無しさん (ワッチョイ 4abd-G1eK)
2022/08/02(火) 13:43:38.32ID:HdRf0/qx0315デフォルトの名無しさん (ワッチョイ b190-Wndz)
2022/08/02(火) 14:23:10.77ID:TouO0DTh0 俺も同じことしてるけど、ただ、一瞬見えないように何かのWidgetでくるんで高さ求めてる
まぁカクつくのは別の問題だが
まぁカクつくのは別の問題だが
316デフォルトの名無しさん (ワッチョイ b190-Wndz)
2022/08/02(火) 14:34:26.77ID:TouO0DTh0 Visiblity,Opacity,Offstageとかそこら辺のWidgetだっけ?
317デフォルトの名無しさん (アウアウウー Sa09-JYI4)
2022/08/02(火) 14:53:26.36ID:mx7A804Ta318デフォルトの名無しさん (ワッチョイ d52f-Og+R)
2022/08/03(水) 10:55:34.70ID:tx6+aymb0 RenderBoxを作りなさい
319デフォルトの名無しさん (スッップ Sd33-N/Xj)
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の勉強なので今回は避けたいです。
説明用のコードを作成しました。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(),
);
}
}
ただ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(),
],
),
),
);
}
}
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}"),
);
},
),
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}"),
);
}),
),
),
),
],
);
}
}
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に移動")),
],
);
}
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,);
}
}
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);
}
}
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);
}
}
327デフォルトの名無しさん (ワッチョイ b190-HX2K)
2022/08/08(月) 23:25:24.19ID:1TtsycsU0 MVVM的にはViewModelはView依存しちゃだめだから、そこら辺はViewModelから追い出さないと
Scrollable.ensureVisibleっておもいっきりViewのメソッドじゃないのか?
Scrollable.ensureVisibleっておもいっきりViewのメソッドじゃないのか?
328デフォルトの名無しさん (ワッチョイ ebbb-VYY0)
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使ったことないからなようわからんので自分で)
View側ではその変数の変更を監視して、変わったらスクロールするメソッドを呼ぶ。initStateだか、初期化するときにViewModelを監視してスクロールさせるコードを仕込む(ここはProvider使ったことないからなようわからんので自分で)
330デフォルトの名無しさん (ワッチョイ b190-HX2K)
2022/08/08(月) 23:57:08.05ID:1TtsycsU0331デフォルトの名無しさん (ワッチョイ 597d-Xua2)
2022/08/09(火) 06:13:57.04ID:wrWGer3C0 ちゃんとしたMVVMになってなくても、コードがきちんと整理されていれば何も問題ないな
332デフォルトの名無しさん (ワッチョイ 597d-Xua2)
2022/08/09(火) 06:19:20.79ID:wrWGer3C0 >>329
自分もパッと思いつくのはこの設計
自分もパッと思いつくのはこの設計
333デフォルトの名無しさん (ワッチョイ 597d-Xua2)
2022/08/09(火) 06:20:31.25ID:wrWGer3C0 あー、でも再描画の時に質問者の想定通りの動作をするかはちょっと分かんないなあ
334デフォルトの名無しさん (ワッチョイ 312f-rSKY)
2022/08/09(火) 08:57:08.88ID:aSkVZgU00 1 controllerで操作できるウィジェットを作る(StatefulWidget)
Scrollable.ensureVisibleはそこに内包
2 ボタンを押した時にcontroller.scrollToItem(100)とか呼ぶ
Scrollable.ensureVisibleはそこに内包
2 ボタンを押した時にcontroller.scrollToItem(100)とか呼ぶ
335デフォルトの名無しさん (ワッチョイ 312f-rSKY)
2022/08/09(火) 09:00:24.72ID:aSkVZgU00 コードを画像にしてまでこんな所で質問しようって考えがすげーな
スタックオーバーフローとか知らんのか
Qiitaにも質問機能あるでしょ
スタックオーバーフローとか知らんのか
Qiitaにも質問機能あるでしょ
336デフォルトの名無しさん (スッップ Sd33-DCBw)
2022/08/09(火) 15:25:31.33ID:Mf8FpV7Td 別にええやん
337デフォルトの名無しさん (ワッチョイ 597d-BHIy)
2022/08/09(火) 17:21:10.50ID:wrWGer3C0 実際、回答がついてるわけだしな
338デフォルトの名無しさん (ワッチョイ 1b66-Z611)
2022/08/10(水) 01:33:37.49ID:B39rpR+U0 流行りそうだが、いきなりGoogleが辞めるこれしそうでもあり
なかなか本格的にやる気にはならんなぁ...
なかなか本格的にやる気にはならんなぁ...
339319 (ワッチョイ 33bd-cWyh)
2022/08/10(水) 03:00:06.10ID:YckXqQDi0 >>320,327,328,331,334
ありがとうございます。
MVVMに固着しすぎてたかなって思えてきたので、StreamController をviewmodel側に設置して
view側でlistenしようかなと思います。
ありがとうございます。
MVVMに固着しすぎてたかなって思えてきたので、StreamController をviewmodel側に設置して
view側でlistenしようかなと思います。
340デフォルトの名無しさん (ワッチョイ c92c-dJ4b)
2022/08/12(金) 21:42:29.24ID:6GrNGj6K0 >>338
業界的にはかなり好意的だから大丈夫だと思うけども
業界的にはかなり好意的だから大丈夫だと思うけども
341デフォルトの名無しさん (ワッチョイ e5ae-nhkz)
2022/08/18(木) 11:45:26.72ID:+3bWxeOp0 >>338
無くなったら別環境をやればいいじゃん
無くなったら別環境をやればいいじゃん
342デフォルトの名無しさん (アウアウエー Sa4a-3dbE)
2022/08/18(木) 13:59:01.18ID:xHW5D51ea リスクを取りたくない人は枯れた技術。
これマメな
これマメな
343デフォルトの名無しさん (ワッチョイ dd5f-cQuI)
2022/08/18(木) 21:28:34.14ID:4BmQsPQj0 flutter flameのbuttoncomponentのサンプルってどこかに転がってないですか?
344デフォルトの名無しさん (ワッチョイ 8959-IWzR)
2022/08/19(金) 03:30:52.38ID:R4iFuILc0345デフォルトの名無しさん (ワッチョイ 89ad-YciU)
2022/08/19(金) 07:31:13.85ID:NHdbFiYH0 >>344
グロ
グロ
346デフォルトの名無しさん (ワッチョイ 0201-lFw7)
2022/08/30(火) 10:12:32.21ID:1QqOIvnF0 Flutter大学とかに通ってるやついる?
いねぇ~よなぁ?
いねぇ~よなぁ?
347デフォルトの名無しさん (ワッチョイ 0201-lFw7)
2022/08/30(火) 10:12:50.23ID:1QqOIvnF0 金払ってまでやりたくない
348デフォルトの名無しさん (スフッ Sd22-ePGj)
2022/08/30(火) 14:20:13.03ID:5IkPV7X+d ウィジェットもパッケージもどんどん増えてるから、その時点での特徴・使い方の比較とか、自分で調査したらそれなりの労力はかかるので、質の高い情報がまとまってるなら有料でも違和感は無い。
無料の情報もネットにあるけど結局情報の質の評価は受け手の問題。
flutter大学がどうかは知らん。
無料の情報もネットにあるけど結局情報の質の評価は受け手の問題。
flutter大学がどうかは知らん。
349デフォルトの名無しさん (ワッチョイ 6101-7uqO)
2022/08/30(火) 17:48:48.71ID:QeT8iV/W0 結局、Dartの言語仕様はさほど変わらなくともその他のライブラリは文字通り日進月歩なので結局自分でフォローし続けるしかないのな。
綺麗に分かりやすくまとまったサイトや書籍ができる頃にはその情報は陳腐化してるというジレンマ。
綺麗に分かりやすくまとまったサイトや書籍ができる頃にはその情報は陳腐化してるというジレンマ。
350デフォルトの名無しさん (アウアウウー Sa85-yNcK)
2022/08/30(火) 18:01:50.83ID:PFffRiy6a これってcssと連携できんのか?
何か覚えるの無駄な時間って感じするなぁ
何か覚えるの無駄な時間って感じするなぁ
351デフォルトの名無しさん (ワッチョイ 6924-/y7l)
2022/08/30(火) 18:12:56.85ID:QoybSOu70 >>349
逆に言えば新陳代謝が激しいのでキャッチアップし続けられるなら食い扶持に困らないってのはあるな
まあ大半はキャッチアップし続けるのがだんだん面倒くさくなってExcel設計書書く方に回っちゃうんだけど
逆に言えば新陳代謝が激しいのでキャッチアップし続けられるなら食い扶持に困らないってのはあるな
まあ大半はキャッチアップし続けるのがだんだん面倒くさくなってExcel設計書書く方に回っちゃうんだけど
352デフォルトの名無しさん (ワッチョイ 8601-lFw7)
2022/08/30(火) 18:51:30.22ID:CvuNCIq60 >>349
ライブラリ自分でかけない雑魚はそうなるわな
ライブラリ自分でかけない雑魚はそうなるわな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- 20代の3割が「テレビ見ない」現実…そして静かに広がる「究極のテレビ離れ」とは [muffin★]
- 【悲報】中国→日本行きの航空チケット、高市有事の影響で50万人分がキャンセルされる [834922174]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- んなっしょい🍬禁止🈲のお🏡
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 高市早苗「……なんて言ってみたw」中国「なんだ、言ってみただけかw」👈これで全部元通りになるという事実 [782460143]
- 【悲報】ガラパゴス島国ジャップ、自分達の容姿が優れてると錯覚してしまう [383063292]
