• <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.    

    亚洲精品一卡2卡3卡四卡乱码 | 国产精品自在拍在线拍| 久久精品国产一区二区三区不卡| 91精品国产麻豆国产自产在线| 久久精品女人天堂AV麻| 国产成人精品18| 99精品国产在这里白浆| 国产精品视频九九九| 国产欧美一区二区精品仙草咪| 无码精品国产一区二区三区免费 | 亚洲中文字幕久久精品无码2021| 国产三级精品三级在线观看专1| 亚洲国产精品18久久久久久| 久久精品视频网站| 精品久久人人妻人人做精品| 精品久久中文字幕| 国产精品va一级二级三级| 国产精品igao视频网网址| 精品久久久久久国产免费了| 精品亚洲福利一区二区| 国产成人精品怡红院| 无码精品日韩中文字幕| 91国内外精品自在线播放| 青草热在线精品视频99app| 久久精品无码中文字幕| 91大神精品全国在线观看| 久久久99精品免费观看| 手机在线观看精品国产片| 亚洲av无码国产精品色在线看不卡 | 国产精品国产三级国产AV麻豆| 99热这里只有精品7| 国产乱人伦偷精品视频免下载| 亚洲一区无码精品色| 国产精品久久久久久久久电影网 | 精品久久久久久无码中文字幕一区 | 国产精品自产拍在线18禁| 男女男精品网站免费观看| 自拍偷自拍亚洲精品偷一| 精品国产性色无码AV网站| 午夜国产精品免费观看| 精品人妻久久久久久888|