アイテムの削除をアニメーション化するときにリスト要素を2回表示するフラッターアニメーションリスト

ニコラスミュア

フラッターで発生している問題を表示するためのリストを作成しました。

リストアイテムボタンをクリックするたびに、その下のボタンが削除されます。下のgifからわかるように、ボタンをクリックすると、下部の要素の2番目のコピーが作成されます。

ここに画像の説明を入力してください

アニメーションの途中で一時停止すると、次のようになります。

ここに画像の説明を入力してください

AnimtedListを作成するために、私はそれにグローバルキーを与えることから始めました:

final GlobalKey<AnimatedListState> _ListKey = GlobalKey();

次に、次のような色のリストを作成します。

List<Color> listColors = [Colors.orange, Colors.green, Colors.red, Colors.blue, Colors.yellowAccent, Colors.brown,];

次に、次のようなAnimatedListがあります。これは、listColorsの長さの初期サイズと、_buildListItemの子を持ちます。

AnimatedList(
    shrinkWrap: true,
    physics: NeverScrollableScrollPhysics(),
    key: _ListKey,
    initialItemCount: listColors.length,
    itemBuilder: (context, index, animation) {
                    return _buildListItem(index, animation);
    },
),

これは、リストアイテムのビルドメソッドであり、List_Elementの子を持つSizeTransitionです。

    SizeTransition _buildListItem(int index, Animation<double> animation,) {
          return SizeTransition(
            sizeFactor: animation,
            child: List_Element(index),
    );
}

これはList_Elementであり、色のリストのインデックスによって設定された色のシンプルなボタンが付いたリストの行です。onPressedメソッドで、removeFromListFunctionを呼び出して、下の行を削除します。

class List_Element extends StatefulWidget {
      int listIndex;
      List_Element(int listIndex) {
        this.listIndex = listIndex;
      }

      @override
      _List_ElementState createState() => _List_ElementState();
    }

    class _List_ElementState extends State<List_Element> {

      @override
      Widget build(BuildContext context) {
        return Padding(
          padding: const EdgeInsets.all(4),
          child: Container(
            width: double.infinity,
            height: 50,
            child: RaisedButton(
              color: listColors[widget.listIndex],
              elevation: 2,
              child: Center(child: Text("List item " + widget.listIndex.toString(), style: TextStyle(fontWeight: FontWeight.bold),),),
              onPressed: (){
                  _removeFromList(widget.listIndex);

              },
            ),
          ),
        );
      }
}

これはremoveFromList関数です。

void _removeFromList(int index) {
      listColors.remove(int);
      _ListKey.currentState.removeItem(index+1,
      (BuildContext context, Animation<double> animation) {
        return  _buildListItem(index, animation);
      });
    }

それがアニメーションリストの問題なのか、それとも私の実装の問題なのかはわかりません。

ご協力いただきありがとうございます

DamonAskavio
void _removeFromList(int index) {
  listColors.remove(int);
  _ListKey.currentState.removeItem(index+1,
  (BuildContext context, Animation<double> animation) {
    //return  _buildListItem(index, animation);
      return  _buildListItem(index + 1, animation);
  });
}

私が間違っていなければ、これが起こっている理由は、「削除された」ボタンを再構築するときに「現在クリックされている」ボタンのインデックスを渡しているためです。したがって、クリックされたボタンが再び表示されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

リストアイテムが削除されたときにVueでリストアイテムをアニメーション化する方法

分類Dev

アニメーションリストを使用して最初にレンダリングされたアイテムをフラッターでアニメーション化する方法

分類Dev

SwiftUIリストでアイテムを移動するときの不要なアニメーション

分類Dev

SwiftUIリストでアイテムを移動するときの不要なアニメーション

分類Dev

リスト要素の位置変更をアニメーション化する方法

分類Dev

セグエのカスタムトランジションと一緒にステータスバーをアニメーション化する

分類Dev

ネイティブアニメーションフラットリストアイテムをアイテムごとに反応させる

分類Dev

SwiftUI:コンテンツの変更をアニメーション化せずにリストの変更をアニメーション化する

分類Dev

Windows Phone8でアニメーション付きのリストボックス削除アイテムを作成する必要があります

分類Dev

再入力アニメーションをリストの別のアイテムに変更する

分類Dev

ブラウザのアクションコンテキストメニューのデフォルトのタイトルエントリを削除する

分類Dev

wpfのリストビューにリストするために新しく追加されたアイテムをアニメーション化する方法

分類Dev

リスト内のアイテムにアニメーションを適用する方法

分類Dev

アニメーションとスクリプトの両方でゲームオブジェクトをアニメーション化する

分類Dev

トランジションを使用してToDoリストからアイテムを追加/削除するアニメーション

分類Dev

SASS、各リストアイテムを遅延してアニメーション化する

分類Dev

アニメーション化されたリストアイテムを通常の状態に戻す

分類Dev

Kotlinでアニメーションリストをアニメーション化する方法は?

分類Dev

matplotlib でステム プロットをアニメーション化する

分類Dev

ウィジェットリストに追加されるとすぐにコンテナをアニメーション化する(表示されるとおり)

分類Dev

データソースを変更するときのSwiftUIリストアニメーション

分類Dev

スタイリング-tdがアニメーションで幅を変更しているときにテキストの外観を設定する

分類Dev

Xaringanの図とテキストをアニメーション化する

分類Dev

SDLキーが押されたときにスプライトをアニメーション化する方法

分類Dev

jQueryでアニメーション化するときに要素をオフセットする

分類Dev

円の周りを回転するようにテキストをアニメーション化する

分類Dev

nmslibを使用してフラスコアプリケーションをユニットテストするときのインポートエラー

分類Dev

CSS-リストの順序をアニメーション化する

分類Dev

Reactでdivのリストをアニメーション化する

Related 関連記事

  1. 1

    リストアイテムが削除されたときにVueでリストアイテムをアニメーション化する方法

  2. 2

    アニメーションリストを使用して最初にレンダリングされたアイテムをフラッターでアニメーション化する方法

  3. 3

    SwiftUIリストでアイテムを移動するときの不要なアニメーション

  4. 4

    SwiftUIリストでアイテムを移動するときの不要なアニメーション

  5. 5

    リスト要素の位置変更をアニメーション化する方法

  6. 6

    セグエのカスタムトランジションと一緒にステータスバーをアニメーション化する

  7. 7

    ネイティブアニメーションフラットリストアイテムをアイテムごとに反応させる

  8. 8

    SwiftUI:コンテンツの変更をアニメーション化せずにリストの変更をアニメーション化する

  9. 9

    Windows Phone8でアニメーション付きのリストボックス削除アイテムを作成する必要があります

  10. 10

    再入力アニメーションをリストの別のアイテムに変更する

  11. 11

    ブラウザのアクションコンテキストメニューのデフォルトのタイトルエントリを削除する

  12. 12

    wpfのリストビューにリストするために新しく追加されたアイテムをアニメーション化する方法

  13. 13

    リスト内のアイテムにアニメーションを適用する方法

  14. 14

    アニメーションとスクリプトの両方でゲームオブジェクトをアニメーション化する

  15. 15

    トランジションを使用してToDoリストからアイテムを追加/削除するアニメーション

  16. 16

    SASS、各リストアイテムを遅延してアニメーション化する

  17. 17

    アニメーション化されたリストアイテムを通常の状態に戻す

  18. 18

    Kotlinでアニメーションリストをアニメーション化する方法は?

  19. 19

    matplotlib でステム プロットをアニメーション化する

  20. 20

    ウィジェットリストに追加されるとすぐにコンテナをアニメーション化する(表示されるとおり)

  21. 21

    データソースを変更するときのSwiftUIリストアニメーション

  22. 22

    スタイリング-tdがアニメーションで幅を変更しているときにテキストの外観を設定する

  23. 23

    Xaringanの図とテキストをアニメーション化する

  24. 24

    SDLキーが押されたときにスプライトをアニメーション化する方法

  25. 25

    jQueryでアニメーション化するときに要素をオフセットする

  26. 26

    円の周りを回転するようにテキストをアニメーション化する

  27. 27

    nmslibを使用してフラスコアプリケーションをユニットテストするときのインポートエラー

  28. 28

    CSS-リストの順序をアニメーション化する

  29. 29

    Reactでdivのリストをアニメーション化する

ホットタグ

アーカイブ