一区二区三区欧美日韩-一区二区三区欧美-一区二区三区免费在线视频-一区二区三区免费在线观看-久久精品店-久久精品第一页

歡迎您光臨深圳塔燈網絡科技有限公司!
電話圖標 余先生:13699882642

網站百科

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

Flutter知識點: Drag

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

效果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.junxiaosheng.cn/17535.html
相關APP開發
 八年  行業經驗

多一份參考,總有益處

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

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

業務熱線:余經理:13699882642

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

主站蜘蛛池模板: 国产精品高清m3u8在线播放| 欧美 亚洲 有码中文字幕| 在线观看免费av网| 麻豆AV无码精品一区二区| www黄色大片| 校园男男高h小黄文| 久久精品亚洲热综合一本奇米| 18禁止看的免费污网站| 人人做人人干| 国产香蕉视频在线播放| 97精品少妇偷拍蜜桃AV| 天堂岛www| 妹妹的第一次有点紧| 国产 日韩 欧美 综合 激情 | 亚洲欧美一区二区三区导航| 两个客户一起吃我的奶| 国产成人一区免费观看| 曰本熟妇乱妇色A片在线| 日本亚洲精品无码区国产电影| 国产在线播放KKK| 99久久国产综合精品| 亚洲狠狠网站色噜噜| 秋霞电影院午夜伦高清| 久久精品中文字幕免费| 丰满的女朋友 在线播放| 2019天天射干网站| 亚洲 欧美 中文 日韩 视频| 免费在线伦理片| 精品国产乱码久久久久乱码| 动漫护士被乳羞羞漫| 88蜜桃人妻无码精品系列| 亚洲国产亚综合在线区尤物| 欧美日韩免费播放一区二区| 精品视频在线播放| 国产精品99久久久久久AV| YELLOW在线观看高清视频免费| 亚洲一卡久久4卡5卡6卡7卡| 无码国产成人777爽死| 区一区二视频免费观看| 美女张开腿露尿口给男人亲| 黄色片中文|