• <ul id="cgeq2"></ul>
  • 歡迎您光臨深圳塔燈網絡科技有限公司!
    電話圖標 余先生:13699882642

    網站百科

    為您解碼網站建設的點點滴滴

    Flutter知識點: Drag

    發表日期:2018-07 文章編輯:小燈 瀏覽次數:3277

    效果GIF

    drag.gif

    需求

    1. 7個可拖拽的色塊
    2. 1個固定的隨機顏色色塊
    3. 同色塊則計分

    實現需要的Widget

    1. Draggable :一個可以被拖拽到DragTarget的widget
    2. DragTarget:一個用來接收被拖拽的Draggable的widget
    3. Positioned:定位

    拆解

    1.可拖拽的色塊

    return Positioned( left: pos.dx, top: pos.dy, child: Draggable( data: widget.dragModel, child: Container( width: drag_item_height, height: drag_item_height, color: widget.dragModel.itemBgColor, child: Center( child: Text( widget.dragModel.itemName, style: TextStyle( color: Colors.white, decoration: TextDecoration.none, fontSize: 12.0, ), ), ), ), onDraggableCanceled: (velocity, offset) { if (!mounted) return; setState(() { //坐標是根據全屏算的,需要計算appbar和statusBar的高度double dx = offset.dx; double dy = offset.dy - appBarHeight - statusBarHeight;//臨界點判斷 if (dx < 0) { dx = 0.0; }if (dx > screenWidth - drag_item_height) { dx = screenWidth - drag_item_height; }if (dy < 0) { dy = 0.0; }if (offset.dy + drag_item_height > screenHeight) { dy = screenHeight - drag_item_height - appBarHeight - statusBarHeight; }pos = new Offset(dx, dy);}); }, feedback: Container( width: drag_item_height, height: drag_item_height, color: widget.dragModel.itemBgColor.withOpacity(0.5), child: Center( child: Text( widget.dragModel.itemName, style: TextStyle( color: Colors.white, decoration: TextDecoration.none, fontSize: 14.0, ), ), ), ), ));

    2.隨機色塊,接收被拖拽的色塊

    @override Widget build(BuildContext context) { return Positioned( right: 0.0, child: DragTarget( onAccept: (DragModel model) { if (model.itemBgColor == _curRandomColor) { _score++; } }, builder: ( BuildContext context, List<dynamic> accepted, List<dynamic> rejected, ) { return Container( width: 200.0, height: 200.0, decoration: BoxDecoration( color: _curRandomColor, ), child: Center( child: Text( "放入正確的顏色\n您的得分:$_score", style: new TextStyle(fontSize: 16.0, color: Colors.white), ), ), ); }, ), ); } 

    3.組合

    @overrideWidget build(BuildContext context) {return new Scaffold(appBar: _buildAppbar(),body: new Stack(children: <Widget>[new DragItem(new DragModel(Offset(0.0, 0.0), '紅', Colors.red)),new DragItem(new DragModel(Offset(0.0, 1 * drag_item_height), '橙', Colors.orange)),new DragItem(new DragModel(Offset(0.0, 2 * drag_item_height), '黃', Colors.yellow)),new DragItem(new DragModel(Offset(0.0, 3 * drag_item_height), '綠', Colors.green)),new DragItem(new DragModel(Offset(0.0, 4 * drag_item_height), '青', Colors.indigoAccent)),new DragItem(new DragModel(Offset(0.0, 5 * drag_item_height), '藍', Colors.blue)),new DragItem(new DragModel(Offset(0.0, 6 * drag_item_height), '紫', Colors.purple)),new DragDestination(),],),);} 

    已有項目集成到Flutter代碼已經上傳到我的GITHUB

    知乎日報Flutter版代碼已經上傳到我的GITHUB

    基礎學習過程中的代碼都放在GITHUB

    每天學一點,學到Flutter發布正式版!


    本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶學習參考,本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.juherenli.com/17535.html
    相關APP開發
     八年  行業經驗

    多一份參考,總有益處

    聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

    咨詢相關問題或預約面談,可以通過以下方式與我們聯系

    業務熱線:余經理:13699882642

    Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

    99精品人妻无码专区在线视频区| 99久久精品国内| 91精品国产91久久久久久| 99re这里只有精品热久久| 精品久久久中文字幕一区| 91精品国产品国语在线不卡| 国产成人亚洲综合无码精品| laowang在线精品视频| 欧美日韩久久久精品A片| 91精品一区二区三区久久久久| 国产一区二区三区精品视频 | 无码精品人妻一区二区三区漫画 | 国产精品丝袜一区二区三区| 国产精品无码国模私拍视频| 久久91这里精品国产2020| 日韩国产精品99久久久久久| 精品亚洲456在线播放 | 国产精品真实对白精彩久久| 蜜芽亚洲av无码精品色午夜 | 麻豆国产精品免费视频| 久久久免费的精品| 亚洲精品国产精品乱码视色| 久久久久国产成人精品亚洲午夜 | 国内精品九九久久久精品| 九九热这里只有国产精品| 国产精品热久久毛片| 亚洲av无码国产精品色在线看不卡 | 精品国产一区二区三区久久蜜臀| 国产亚洲美女精品久久久久| 国产精品女上位在线观看| 自拍偷自拍亚洲精品播放| 精品国产粉嫩内射白浆内射双马尾| 国产成人精品久久二区二区| 亚洲午夜久久久精品电影院| 久久久精品久久久久特色影视 | 久久99久久99小草精品免视看| 中文字幕精品无码亚洲字| 国产精品模特hd在线| 精品国产日韩亚洲一区91| 精品国产一区二区三区久久狼 | 亚洲av专区无码观看精品天堂|