Flutterは別のクラスで呼び出されたときに変数の新しい値を取得できません
P粉670107661
P粉670107661 2024-04-01 22:37:38
0
1
451

この StatefulWidget は、条件に基づいて MySQL データベースからデータを取得し、取得した値を配列に追加して、配列の値を使用して ListView に表示できるようにするものです。私の問題は、配列 (_fileValues) と _custUsername 変数が空であるか更新されていない場合に、例外がスローされないことです。

これは私のステートフル ウィジェット (main.dart)

リーリー

UsernameGetter クラス (このクラスは、テキスト フィールド入力の電子メールに基づいてデータベース テーブルからユーザーのユーザー名を取得します)

UsernameGetter クラスから _usernameDetected クラスを出力すると、返された文字列の更新されたバージョンが返されますが、_custUsername に割り当てると、 UsernameValuemain.dart から削除されると、更新されず、場合によっては null 値が返されます。

リーリー

NameGetter クラス (テキスト列に格納されているユーザー項目名を取得)

NameGetter クラスの場合、UsernameGetter でも同じことが起こります。 main.dart から値を取得し、その値を _fileValues リストに追加すると、値が空になる場合や値が更新されない場合があります。

リーリー

自分の間違いがどこにあるのかはわかりませんが、間違いがたくさんあることは間違いなく、それを理解するのを手伝ってくれる人が必要です。特に、リストと変数が更新されない、または空である場合がある理由に関してです。

参考リンク:

Flutter ListView が更新されていません

フラッターのリストがコード内で更新されません

フラッターで変数値が更新されないのはなぜですか?

P粉670107661
P粉670107661

全員に返信(1)
P粉521697419

###質問###

callData()

このメソッドの簡略版は次のとおりです。 リーリー 上で述べたように、

anotherAsyncFunction(foo)

someAsyncFunction() の直後、then() > 代入の前に呼び出されます。 fooの値。

print()

ステートメントを戦略的に挿入することで、この動作を自分で観察できます。 ###解決### 内部的には、

Future.then()

async

/await は同じものです。ただし、async/await を使用すると、順次実行されるコードのように見えるため、非同期コードの動作を推測するのが容易になることがよくあります。 これらのいずれかを使用できますが、コードを読むときに理解しやすくするために、async/

await

に移行することをお勧めします。 以下は、callData() をリファクタリングする方法の例です:

リーリー

このように書くと、NameGetter().Connection(custUsername) を呼び出す前に

custUsername

が割り当てられていることは明らかです。 非同期プログラミング: futures、async、await を必ずお読みください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート