ListViewの上部にウィジェットを挿入するにはどうすればよいですか?

ニック

簡単なメモ:

私のすべてのコード例では、のmaterial.Widget代わりに次のようなものが表示されますWidgetこれは、インポートに次のような名前を付けるのが好きなためです。

import 'package:flutter/material.dart' as material;

私の質問:

ListViewに、新しく追加されたウィジェットをリストの一番上に表示させようとしています。モデルのリスト(ListViewに入るウィジェットを構築するために必要な情報を含むクラス)のみを含む単純なステートフルウィジェットがあり、そのリストに基づいてListViewの子を構築する必要があります。

class Page extends material.StatefulWidget {
  final List<CardModel> cardModels;
  Page(this.cardModels);

  @override
  _PageState createState() => new _PageState(cardModels);
}

class _PageState extends material.State<Page> {
  List<CardModel> cardModels;

  _PageState(this.cardModels);

  @override
  material.Widget build(material.BuildContext context) {
    return new material.ListView(
      children: cardModels.map((cardModel) => new Card(cardModel.cardID)).toList(),
    );
  }
}

これから私が期待する動作は、buildメソッドが呼び出される(そしてsetStateが適切に使用される)ときはいつでも、ListViewが適切に再構築され、リストの順序で子ウィジェットが含まれる必要があるということです。新しいモデルをcardModelsに順番に追加するだけで、これは正常に実行されます。

cardModels.add(new CardModel(nextID++));

ウィジェットが順番に追加され、IDが適切に増加していることがわかります。

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

ただし、新しいウィジェットを上部に挿入する必要があります(上部に高いIDで表示されます)。これを実現するために、リストの最初に新しいモデルを挿入してみます。

cardModels.insert(0, new CardModel(nextID++));

残念ながら、正しいウィジェットが表示される代わりに、ID0のウィジェットが何度も表示されます。

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

モデルのリストを印刷してIDを降順で確認できるため、モデルのリストが正しく更新されていることがわかります。フラッターがこの動作を引き起こしているウィジェットの変更を検出する方法について何かがあると思いますが、多くの読書の後、私はまだそれを理解することができませんでした。どんな助けでも大歓迎です。また、ページ(ListViewを含むウィジェット)をその子の1つとして構築するウィジェットでsetstateを呼び出します。

btn = new FloatingActionButton(
          onPressed: () => setState(_pageController.addCard),
          tooltip: 'Upload File',
          child: new Icon(Icons.file_upload),
        );

_pageControllerは、モデルのリストを変更するオブジェクトです。これで十分な情報が得られない場合は、お知らせください。コードを追加したり、質問に回答したりできます。

ニック

結局、私が作成したカードウィジェットはステートフルである必要はありませんでした。ステートレスに変更したところ、問題は解決しました。しかし、なぜそれらをステートフルにすることがそれを壊すのか分かりません。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

QTextEditウィジェットの上部にテキストを挿入するにはどうすればよいですか?

分類Dev

FlutterのListViewにDismissibleウィジェットを追加するにはどうすればよいですか?

分類Dev

Flutterの列にウィジェットを動的に追加するにはどうすればよいですか?

分類Dev

ウィジェットのリストをラップするにはどうすればよいですか?

分類Dev

appBarLayoutの上にCardViewウィジェットを設定するにはどうすればよいですか?

分類Dev

Neumorphicウィジェットを同心円のFlutterに配置するにはどうすればよいですか?

分類Dev

ウィジェットを特定の場所に移動するにはどうすればよいですか?

分類Dev

複数のonclickpendingintentsをウィジェットに設定するにはどうすればよいですか?

分類Dev

オブジェクトの値を数式に挿入するにはどうすればよいですか?

分類Dev

ListView.builder()ウィジェットの高さをスタック全体の高さにするにはどうすればよいですか?

分類Dev

SplitLayoutPanelで中央ウィジェットの「setWidgetSize」を設定するにはどうすればよいですか?

分類Dev

PageViewウィジェットのFloatingActionButtonの色を変更するにはどうすればよいですか?

分類Dev

Flutterの同じ画面のListViewに沿ってウィジェットを表示するにはどうすればよいですか?

分類Dev

Flutterで1つのウィジェットを画面の上部に配置し、別のウィジェットを画面の中央に配置するにはどうすればよいですか?

分類Dev

QGraphicsSceneのウィジェット(QGraphicsProxyWidget)を取得するにはどうすればよいですか?

分類Dev

ウィジェットの高さを取得するにはどうすればよいですか?

分類Dev

TRichEditの上部に新しいフォーマットされていない行を挿入するにはどうすればよいですか

分類Dev

Flutterでウィジェットを別のウィジェットの上に配置するにはどうすればよいですか?

分類Dev

Kivyでウィジェットをすぐに更新するにはどうすればよいですか?

分類Dev

Android:ConstraintLayoutを使用してウィジェットを別のウィジェットの上に表示するにはどうすればよいですか?

分類Dev

ウィジェットのViewFlipperにアクセスして、コンテンツを動的に入力するにはどうすればよいですか?

分類Dev

Tkinterのテキストウィジェットにファイルコンテンツを入力するにはどうすればよいですか?

分類Dev

BoxLayoutでkivyウィジェットを他のウィジェットと比較して中央に配置するにはどうすればよいですか?

分類Dev

tkinterウィジェットを既存のウィジェットの下に配置するにはどうすればよいですか?

分類Dev

マップをウィジェットに印刷するにはどうすればよいですか?

分類Dev

AndroidウィジェットEditTextに透かしを追加するにはどうすればよいですか?

分類Dev

親ウィジェットの名前を子ウィジェットクラスから出力するにはどうすればよいですか?

分類Dev

ReactWebサイトで中型ウィジェットを使用するにはどうすればよいですか

分類Dev

Yesodでトークンウィジェットを生成するにはどうすればよいですか?

Related 関連記事

  1. 1

    QTextEditウィジェットの上部にテキストを挿入するにはどうすればよいですか?

  2. 2

    FlutterのListViewにDismissibleウィジェットを追加するにはどうすればよいですか?

  3. 3

    Flutterの列にウィジェットを動的に追加するにはどうすればよいですか?

  4. 4

    ウィジェットのリストをラップするにはどうすればよいですか?

  5. 5

    appBarLayoutの上にCardViewウィジェットを設定するにはどうすればよいですか?

  6. 6

    Neumorphicウィジェットを同心円のFlutterに配置するにはどうすればよいですか?

  7. 7

    ウィジェットを特定の場所に移動するにはどうすればよいですか?

  8. 8

    複数のonclickpendingintentsをウィジェットに設定するにはどうすればよいですか?

  9. 9

    オブジェクトの値を数式に挿入するにはどうすればよいですか?

  10. 10

    ListView.builder()ウィジェットの高さをスタック全体の高さにするにはどうすればよいですか?

  11. 11

    SplitLayoutPanelで中央ウィジェットの「setWidgetSize」を設定するにはどうすればよいですか?

  12. 12

    PageViewウィジェットのFloatingActionButtonの色を変更するにはどうすればよいですか?

  13. 13

    Flutterの同じ画面のListViewに沿ってウィジェットを表示するにはどうすればよいですか?

  14. 14

    Flutterで1つのウィジェットを画面の上部に配置し、別のウィジェットを画面の中央に配置するにはどうすればよいですか?

  15. 15

    QGraphicsSceneのウィジェット(QGraphicsProxyWidget)を取得するにはどうすればよいですか?

  16. 16

    ウィジェットの高さを取得するにはどうすればよいですか?

  17. 17

    TRichEditの上部に新しいフォーマットされていない行を挿入するにはどうすればよいですか

  18. 18

    Flutterでウィジェットを別のウィジェットの上に配置するにはどうすればよいですか?

  19. 19

    Kivyでウィジェットをすぐに更新するにはどうすればよいですか?

  20. 20

    Android:ConstraintLayoutを使用してウィジェットを別のウィジェットの上に表示するにはどうすればよいですか?

  21. 21

    ウィジェットのViewFlipperにアクセスして、コンテンツを動的に入力するにはどうすればよいですか?

  22. 22

    Tkinterのテキストウィジェットにファイルコンテンツを入力するにはどうすればよいですか?

  23. 23

    BoxLayoutでkivyウィジェットを他のウィジェットと比較して中央に配置するにはどうすればよいですか?

  24. 24

    tkinterウィジェットを既存のウィジェットの下に配置するにはどうすればよいですか?

  25. 25

    マップをウィジェットに印刷するにはどうすればよいですか?

  26. 26

    AndroidウィジェットEditTextに透かしを追加するにはどうすればよいですか?

  27. 27

    親ウィジェットの名前を子ウィジェットクラスから出力するにはどうすればよいですか?

  28. 28

    ReactWebサイトで中型ウィジェットを使用するにはどうすればよいですか

  29. 29

    Yesodでトークンウィジェットを生成するにはどうすればよいですか?

ホットタグ

アーカイブ