Flutterを使用して移動可能なスタックウィジェット機能を作成する

Flutterを使用して移動可能なスタックウィジェット機能を作成する

この投稿では、キャンバスとドラッグ可能なノード インターフェースを使用するデスクトップおよび Web 用に私が設計した極秘の Flutter プロジェクトに焦点を当てています。このチュートリアルでは、スタックを使用してウィジェットでドラッグ可能な機能を実現する方法を説明します。

下記の通りです。

ドラッグ可能なウィジェットの例

スタックにアイテムを動的に追加し、それらを区別するために、RandomColor タイパーを使用します。したがって、そのパッケージを追加する必要があります。

ランダムカラー:

次にスタックを含むHomeViewを作成します

クラス HomeView は StatefulWidget を拡張します {
  @オーバーライド
  _HomeViewState は、_HomeViewState を createState() します。
}

クラス_HomeViewStateはState<HomeView>を拡張します。
  リスト<ウィジェット> 可動アイテム = [];

  @オーバーライド
  ウィジェットビルド(BuildContextコンテキスト) {
    Scaffold を返す(
        本体: スタック(
          子: 可動アイテム、
        ));
  }
}

機能は非常にシンプルです。 MoveableStackItemステートフル ウィジェットができます。自分の位置と色を記録します。色は初期化時に設定され、位置はGestureDetectorを介して更新されます。

クラス _MoveableStackItemState は State<MoveableStackItem> を拡張します {
  ダブルx位置 = 0;
  ダブルy位置 = 0;
  色 色;

  @オーバーライド
  void initState() {
    色 = RandomColor().randomColor();
    スーパーステートを初期化します。
  }

  @オーバーライド
  ウィジェットビルド(BuildContextコンテキスト) {
    位置を返す(
      上: y位置、
      左: x位置、
      子: ジェスチャー検出器(
        onPanUpdate: (タップ情報) {
          状態を設定する(() {
            x位置 += tapInfo.delta.dx;
            y位置 += tapInfo.delta.dy;
          });
        },
        子:コンテナ(
          幅: 150,
          高さ: 150,
          色: 色、
        )、
      )、
    );
  }
}

最後に、新しいMoveableStackItemビューを追加します。これは、HomeView のフローティング アクション ボタンを使用して実行します。

 Scaffold を返す(
  フローティングアクションボタン:フローティングアクションボタン(
    押されたとき: () {
      状態を設定する(() {
        移動可能なアイテムを追加します(MoveableStackItem());
      });
    },
  )、
  本体: スタック(
    子: 可動アイテム、
  ));

それでおしまい。これで、ビュー上に移動可能なスタックが作成されました。

これで、Flutter で移動可能なスタック ウィジェットを作成する方法に関するこの記事は終了です。Flutter スタック ウィジェットの関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 100 万件を超える StackOverflow Flutter 20 の質問 (推奨)

<<:  dockerエラーの原因分析 終了しました (1) 4分前

>>:  純粋な CSS 実装 (スクリプトなし) HTML コマンド スタイルのツールチップ テキスト プロンプト効果

推薦する

Linux で同じバージョンの R を使用して Seurat2 と Seurat3 を同時にインストールするチュートリアル

Seurat は、単一細胞解析用の重量級の R パッケージです。使用したことがある人なら誰でも、その...

HTMLの基礎 HTMLの構造

HTML ファイルとは何ですか? HTML は Hyper Text Markup Language...

HTML ul および li タグを使用して画像を表示するサンプル コード

以下のコードをDreamweaverのコードエリアにコピーすると、プレビュー時に以下の画像が表示され...

MySQL 8.0.19 のインストールと設定方法のグラフィックチュートリアル

この記事は、参考のためにMySQL 8.0.19のインストールと設定のグラフィックチュートリアルを記...

MySQL 8.0.20 インストール チュートリアル (画像とテキスト付き) (Windows 64 ビット)

1: mysql公式サイトからダウンロードhttps://dev.mysql.com/downlo...

Pythonは出力をcsv操作に書き込む

以下のように表示されます。 def test_write(self): フィールド=[] field...

HTML要素にフォーカスを設定する方法

コードをコピーコードは次のとおりです。 <本文<フォームアクション="&quo...

HTML と CSS の命名規則の概要

CSS命名規則 ヘッダー: ヘッダーコンテンツ: コンテンツ/含むフッターナビゲーション: navサ...

デジタル時計効果を実現するJavaScript

この記事の例では、JavaScriptでデジタル時計効果を実装するための具体的なコードを参考までに共...

WeChatアプレットbindtapとcatchtapの違いの詳細な説明

目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...

Vue3ナビゲーションバーコンポーネントのカプセル化実装方法

参考までに、Vue3でナビゲーションバーコンポーネントをカプセル化し、スクロールバーのスクロールに合...

Vue ユニットテストに推奨されるプラグインと使用例

目次フレーム最高レベルのエラー報告活発なコミュニティとチーム冗談モカ推奨プラグインVue テストライ...

Reactはconetxtを通じてマルチコンポーネント値転送関数を実装します

この関数の効果はvue的provide/injectに似ています。 contextを通じて反応できる...

HTML タグのネスト規則の紹介

XHTML タグには、div、ul、li、dl、dt、dd、h1~h6、p、a、addressa、s...