美文网首页
Flutter中Draggable的简单使用

Flutter中Draggable的简单使用

作者: 平静的阿卿达 | 来源:发表于2018-10-09 10:52 被阅读233次

    Draggable 是Flutter中一个可以拖拽到DragTarget的widget,同时他可以把自己带有的数据传递给DragTarget。

    使用效果如下:

    一个可拖动的Widget,拖动时原Widget保持不变,会创建一个新的Widget跟随手指滑动。

    Draggable1.gif

    接下来是实现过程

    首先,创建一个可见的界面,用于展示我们想要测试的Draggable。在main.dart中创建一个App,App中通过Scaffold实现appBar和body,Draggable就在body中绘制。

    
    
    void main() => runApp(new MyApp());
    
    ///用于展示Demo的界面,其中的MaterialApp、ThemeData、AppBar都是不必要的,只是稍微美观一点。
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
          title: 'Flutter Demo',
          theme: new ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: new Scaffold(
              appBar: new AppBar(
                title: new Text("DraggableDemo"),
              ),
              body: MyDraggable()),//用于测试Draggable的Widget
        );
      }
    }
    
    
    

    然后就是创建要试用的Draggable了,有两个必传参数

    @required this.child,

    @required this.feedback,

    child是静止时显示的Widget,
    feedback是拖动时跟随手指滑动的Widget。

    同时Draggable还可以携带一个data数据源,将来可以传递给DragTarget。

    ///draggable 是一个可以拖拽到DragTarget的widget
    class MyDraggable extends StatelessWidget {
      final data;
      const MyDraggable({this.data = "MyDraggable", Key key}) : super(key: key);
      @override
      Widget build(BuildContext context) {
        return Draggable(
          data: data,
          child: Container(
            width: 150.0,
            height: 150.0,
            color: Colors.red[500],
            child: Center(
              child: Text('Draggable'),
            ),
          ),
          feedback: Container(
            width: 150.0,
            height: 150.0,
            color: Colors.blue[500],
            child: Icon(Icons.feedback),
          ),
        );
      }
    }
    
    

    这样就实现了一个简单可拖拽的Widget,虽然并没有什么卵用 哈哈。。

    相关文章

      网友评论

          本文标题:Flutter中Draggable的简单使用

          本文链接:https://www.haomeiwen.com/subject/ihreaftx.html