使用flutter創(chuàng)建可移動(dòng)的stack小部件功能
本文主要介紹我為桌面和 Web 設(shè)計(jì)的一個(gè)超級(jí)秘密 Flutter 項(xiàng)目使用了畫布和可拖動(dòng)節(jié)點(diǎn)界面。本教程將展示我如何使用堆棧來使用小部件完成可拖動(dòng)功能
如下所示。

我們將動(dòng)態(tài)地將項(xiàng)目添加到堆棧中并區(qū)分它們,我將使用 RandomColor 類型器。所以我們必須添加那個(gè)包。
random_color:
然后我們可以創(chuàng)建包含我們的堆棧的 HomeView
class HomeView extends StatefulWidget {
@override
_HomeViewState createState() => _HomeViewState();
}
class _HomeViewState extends State<HomeView> {
List<Widget> movableItems = [];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: movableItems,
));
}
}
功能非常簡(jiǎn)單。我們將有一個(gè)MoveableStackItem有狀態(tài)的小部件。它會(huì)跟蹤自己的位置和顏色。顏色在初始化時(shí)設(shè)置,位置通過 更新GestureDetector。
class _MoveableStackItemState extends State<MoveableStackItem> {
double xPosition = 0;
double yPosition = 0;
Color color;
@override
void initState() {
color = RandomColor().randomColor();
super.initState();
}
@override
Widget build(BuildContext context) {
return Positioned(
top: yPosition,
left: xPosition,
child: GestureDetector(
onPanUpdate: (tapInfo) {
setState(() {
xPosition += tapInfo.delta.dx;
yPosition += tapInfo.delta.dy;
});
},
child: Container(
width: 150,
height: 150,
color: color,
),
),
);
}
}
最后要做的是向MoveableStackItem視圖添加一個(gè)新的。我們將通過 HomeView 中的浮動(dòng)操作按鈕來實(shí)現(xiàn)。
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
movableItems.add(MoveableStackItem());
});
},
),
body: Stack(
children: movableItems,
));
就是這樣。現(xiàn)在您的視圖上有一個(gè)可移動(dòng)的Stack。
到此這篇關(guān)于flutter創(chuàng)建可移動(dòng)的stack小部件的文章就介紹到這了,更多相關(guān)flutter stack小部件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
echarts加載區(qū)域地圖并標(biāo)注點(diǎn)的簡(jiǎn)單步驟
這篇文章提供了南海區(qū)域地圖加載以及氣象站點(diǎn)標(biāo)注的詳細(xì)步驟,首先通過DataV.GeoAtlas地理小工具下載南海區(qū)域的JSON地圖文件,接著使用Echarts進(jìn)行地圖的展示,可以選擇是否顯示省下所有市的名字,需要的朋友可以參考下2024-09-09
js閉包實(shí)現(xiàn)按秒計(jì)數(shù)
閉包是一個(gè)擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一個(gè)函數(shù)),因而這些變量也是該表達(dá)式的一部分。相信很少有人能直接看懂這句話,因?yàn)樗枋龅奶珜W(xué)術(shù)。其實(shí)這句話通俗的來說就是:JavaScript中所有的function都是一個(gè)閉包。2015-04-04
網(wǎng)頁實(shí)時(shí)顯示服務(wù)器時(shí)間和javscript自運(yùn)行時(shí)鐘
如果每秒通過ajax加載服務(wù)器時(shí)間的話,就會(huì)產(chǎn)生大量的請(qǐng)求,于是打算使用js 來解決這個(gè)需求2014-06-06
Javascript new關(guān)鍵字的玄機(jī) 以及其它
本人是Javascript菜鳥,下面是前幾天學(xué)習(xí)Javascript的旅程心得,希望對(duì)和我一樣的入門者有點(diǎn)用,也希望高手批評(píng)指正。2010-08-08
一種新的javascript對(duì)象創(chuàng)建方式Object.create()
這篇文章主要介紹了一種新的javascript對(duì)象創(chuàng)建方式Object.create(),感興趣的小伙伴們可以參考一下2015-12-12

