2017-10-02 2 views
0

#flutterで左/右ドラッグをチェックするより良い方法がありますか?私はそれをやったことがありますが、いつかはうまくいきません。#flutterの左/右ドラッグを確認する良い方法はありますか?

new GestureDetector(
    onHorizontalDragEnd: (DragEndDetails details) { 
     print("Drag Left - AddValue"); 

    setState((){ 
     _value++; 
    }); 
    if (details.velocity.pixelsPerSecond.dx > -1000.0) { 
     print("Drag Right - SubValue"); 

     setState((){ 
     _value--; 
     }); 
    } 
    }, 
    child: new Container(
    child:new Text("$_value"), 
), 
); 
+0

このドラッグジェスチャーで達成しようとしていることを説明できますか?あなたが使用できる既存のウィジェットがあるかもしれません。理想的には、あなたが今まで持っているものを使って、減らされたコードサンプルを提供してください。 –

+0

'details.velocity.pixelsPerSecond.axis'の代わりに' details.primaryDelta'を使用してください。 – Darky

+0

@CollinJackson投稿を更新しました。これは私が思うようにコードサンプルが削減されています。クラス/ファイル全体を追加する必要がありますか? – AjayKumar

答えて

1

私はこのためにDismissibleウィジェットを使用します。それはかなり構成可能です。

video

注:あなたがスワイプで視覚的なフィードバックを提供したくない場合は、別のウィジェットの上に透明Dismissibleを入れてStackを使用することができます。

import 'package:flutter/material.dart'; 

void main() { 
    runApp(new MyApp()); 
} 

class MyApp extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new MaterialApp(
     home: new MyHomePage(), 
    ); 
    } 
} 

class MyHomePage extends StatefulWidget { 
    State createState() => new MyHomePageState(); 
} 

class MyHomePageState extends State<MyHomePage> { 
    int _counter = 0; 

    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     body: new Dismissible(
     resizeDuration: null, 
     onDismissed: (DismissDirection direction) { 
      setState(() { 
      _counter += direction == DismissDirection.endToStart ? 1 : -1; 
      }); 
     }, 
     key: new ValueKey(_counter), 
     child: new Center(
      child: new Text(
      '$_counter', 
      style: Theme.of(context).textTheme.display4, 
     ), 
     ), 
    ), 
    ); 
    } 
} 
関連する問題