質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

解決済

1回答

1343閲覧

FlutterのScrollViewを能動的に停止させる方法を探しています。

MediocreDev

総合スコア1

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2022/06/29 14:18

FlutterのScrollViewのスクロールを能動的に停止させる方法を探しています。

動作としては
スクロール状態→複数タッチ→スクロールをアイドル状態
といった流れを考えています。

すでにListenerウィジェットで複数タッチの取得はできており
スクロール途中の状態もNotificationListener<ScrollNotification>で取得は出来ているのですが
こちらから停止させることができていない状態です。

ScrollPositionのドキュメント
beginActivity(ScrollActivity? newActivity) と言うメソッドは確認しているのですがこちらを
どう実装すればいいかが不明な状態です。

解決できる方がいたら教えていただけると助かります。

下記ソースコードになります。

dart

1class _MyPageState extends State<MyPage> { 2 3int _touchCount = 0; 4 5 6 Widget build(BuildContext context) { 7 var _screenSize = MediaQuery.of(context).size; 8 9 return Scaffold( 10 body: NotificationListener<ScrollNotification>( 11 onNotification: (ScrollNotification scrollNotification) { 12 13 if(_touchCount >= 2) 14 { 15 setState(() { 16 //この中でスクロールの停止処理を入れる予定です。 17 }); 18 } 19 20 return true; 21 }, 22 child: Listener( 23 onPointerDown: incrementEnter, 24 onPointerUp: incrementExit, 25 onPointerCancel: incrementExit, 26 child: SingleChildScrollView( 27 28 ), 29 ), 30 ), 31 ); 32 } 33 34 void incrementEnter(PointerEvent details) 35 { 36 touchCount++; 37 } 38 39 void incrementExit(PointerEvent details) 40 { 41 touchCount--; 42 } 43 44}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moriman

2022/07/01 15:54

はじめまして、こんにちは。 タッチしたら止まる、というのがいまいちよくわからないのですが、何にタッチしたら止まるのか、など、もう少し具体的な前提を教えて頂けますでしょうか。 あとScrollControllerが頭に浮かぶのですが、それよりもNotificationListenerの方が都合が良い感じでしょうか?
guest

回答1

0

ベストアンサー

SingleChildScrollViewのphysicsで制御できるのではないかと思います。

class _MyHomePageState extends State<MyHomePage> { int _touchCount = 0; bool _disableScrolling = false; // 追記 @override Widget build(BuildContext context) { var _screenSize = MediaQuery.of(context).size; return Scaffold( body: NotificationListener<ScrollNotification>( onNotification: (ScrollNotification scrollNotification) { if (_touchCount >= 2) { setState(() { //この中でスクロールの停止処理を入れる予定です。 _disableScrolling = true; // 追記 }); } return true; }, child: Listener( onPointerDown: incrementEnter, onPointerUp: incrementExit, onPointerCancel: incrementExit, child: SingleChildScrollView( physics: _disableScrolling. // 追記 ? NeverScrollableScrollPhysics() : AlwaysScrollableScrollPhysics(), child: Container(),

投稿2022/07/01 20:47

harakazu

総合スコア150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問