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 コマンド スタイルのツールチップ テキスト プロンプト効果

推薦する

Vueでスワイパープラグインを使用する際の問題を解決する

デモを作成するときにこのプラグインを使用していくつか問題が発生したため、プラグインの使用方法といくつ...

Vue 条件付きレンダリング v-if と v-show

目次1. 動詞-if 2. <template> で v-if を使用する3. キーを使...

ReactのuseEffectクロージャの落とし穴についての簡単な説明

問題コードuseEffectによって発生したクロージャの問題コードを見てみましょう 定数 btn =...

VUEウォッチリスナーの基本的な使い方の詳しい説明

目次1. 次のコードはwatchの簡単な使用法です2. 即時監視3. ハンドラメソッド4. 深い属性...

js が CSS 属性 (値) のサポートを決定して通知する状況の分析

新しい CSS 機能を使用する場合、その互換性は常に考慮されます。おそらく、その互換性、どのブラウザ...

Vueにログイン認証傍受機能を設置するアイデアを詳しく解説

目次1. 解決策2. サーバーから返されたトークンをブラウザに保存する3. リクエストにアクセス権限...

Linux のメモリ管理とアドレス指定の詳細な紹介

目次1. コンセプトメモリ管理モード住所種別分類例: 2. ページ管理x86 アーキテクチャ 32 ...

js はランダムロールコールを実装します

この記事では、ランダムロールコールを実装するためのjsの具体的なコードを参考までに共有します。具体的...

CentOS サーバーのセキュリティ構成戦略

最近、ブルートフォース攻撃によるサーバのクラッキングが頻発しています。侵入行為を大まかに分析し、よく...

Mac で docker と kubectl の自動補完コマンドを追加する方法

kubectl の紹介kubectl は、k8s クラスターを操作するためのコマンドライン ツールで...

ウェブページ上でデスクトップ exe プログラムを呼び出す簡単な方法

この記事では主に、Web ページ上でデスクトップ exe プログラムを呼び出す方法を紹介します。 W...

vscodeでnpmを使用してbabelをインストールする方法

序文前回の記事ではNode.jsのインストールと設定を紹介しました。今回はVScodeでbableを...

Dockerfile ビルド中に発生する「/bin/sh: pip: コマンドが見つかりません」という問題の解決方法

記述した Dockerfile の内容は次のとおりです。 Python:3.6.8 から pip i...

要素の読み込み効果を実現するための純粋なHTML+CSS

これは Element UI の読み込みコンポーネントのエフェクトです。かっこいいですね。実装してみ...

MySQL Innodbの主な機能挿入バッファ

目次挿入バッファとは何ですか?挿入バッファのトリガー条件は何ですか?なぜ一意のインデックスにできない...