1
1

More than 1 year has passed since last update.

初心者 Flutter x MySQL8 に挑戦する 22 with mysql_client

Last updated at Posted at 2022-08-31

ListViewは遠い 

 exampleで、

  • print.colAt(1)と書いてあれば
    • setStateで  name = row.colAt(1)!と定義して
      • Text(name)と書けば、UIに名前を表示してくれる。

 exampleで 

  • print(row.assoc())と書いてあるれば
    • consoleに全データがMapで表示される。

 よく見ると//print all rows as Map<*String,strig>ってコメントがついてる。
 よく似たのにrow.typedAssoc()というのもあって、こちらはどうやらMap<*String, dynamic>らしい。

だからこれをどうにかして、ListViewにしたいんだがなあ。

 でもここまで来ていながら、「firestreからデータ取って、だあっとListViewに並べる」と同じことができない。まあ、あれは「できた」というより、「できているものを写した」だけだったのだから、当然といえば当然か。

 assocで検索すると、いろんなほかの言語の記事はいっぱい見つかるんだけれどね。 

作戦変更 

 そこで今日は、別方向から攻めることにしてみる。自分である程度理解できていることをする。

  • まずUIにTextFormFieldをつくる。
  • そこに書き込まれた文字列を取得して、select文に組み込む。

 つまり、何を検索するか、をUI側から指定しようということ。一番簡単なのは、idを指定して、1つ拾う。だから 

 onChanged: (text) {
        selectedId = text;
        },

こんな感じで文字列を取って、 

var result = await conn.execute(
"SELECT * FROM timeline WHERE id = $selectedId");

 こんなふうにセレクト文を書くと

スクリーンショット 2022-08-31 21.04.00.png

 やった〜行けるじゃないか。
 ちなみにこれは、年表の4行目、紀元前776年、記録上最初の古代オリンピック、というデータを拾っている。

でも、その先もガンガン、というわけにはいかなかった。

id以外のcolumnで取ろうとすると、そんなcolumnないよ、というエラーが出る。例えば国名のcolumnから中国のデータだけ拾ってください、とか、うまく動かない。なかなかもってイジワルである。いろんなcolumnで試したけど、id以外ではうまくいかなかった。残念。 

 明日も検索をがんばるか、それとも【追加】ページにもTextFormFieldつけてみようかな。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1