溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用flutter創(chuàng)建可移動的stack小部件功能

發(fā)布時間:2021-10-11 09:23:15 來源:億速云 閱讀:147 作者:柒染 欄目:開發(fā)技術

這篇文章給大家介紹如何使用flutter創(chuàng)建可移動的stack小部件功能,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

這里主要介紹我為桌面和 Web 設計的一個超級秘密 Flutter 項目使用了畫布和可拖動節(jié)點界面。

如下所示。

如何使用flutter創(chuàng)建可移動的stack小部件功能

我們將動態(tài)地將項目添加到堆棧中并區(qū)分它們,我將使用 RandomColor 類型器。所以我們必須添加那個包。

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,
        ));
  }
}

功能非常簡單。我們將有一個MoveableStackItem有狀態(tài)的小部件。它會跟蹤自己的位置和顏色。顏色在初始化時設置,位置通過 更新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視圖添加一個新的。我們將通過 HomeView 中的浮動操作按鈕來實現。

 return Scaffold(
  floatingActionButton: FloatingActionButton(
    onPressed: () {
      setState(() {
        movableItems.add(MoveableStackItem());
      });
    },
  ),
  body: Stack(
    children: movableItems,
  ));

就是這樣?,F在您的視圖上有一個可移動的Stack。

關于如何使用flutter創(chuàng)建可移動的stack小部件功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI