🧩
Serverpod 1.0.0覚え書き 7
今日の課題はここ
これはServerpodの公式ではなく、公式で推奨されているtutorialの動画を撮っているCodeXの人のGitHub。動画のFlutter部分があまりにはしょられていたので、こっちまで見にきたのだけれど、そもそも動画と違うじゃないの。というかよく聞くと、「もっといろいろやりたい人はGitHubを見ろ」と動画の中でも言っている。まあよい。このコードを読みながら、どこまで自分のやりたいことができるか試してみよう。
できたこと
前回Flutterから入力したデータを、今回は読み出して表示する。以前のようにタイムアウトにもならずに、うまく読み出して、Listに表示できた。slidableで削除もできた。これらに関して、backendを触る必要はない。(もう設定済みだから、という意味)
コードはこんな感じ
newpod/newpod_flutter/lib/read_all.dart
import 'package:newpod_client/newpod_client.dart';
import 'package:flutter/material.dart';
import 'package:serverpod_flutter/serverpod_flutter.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
var client = Client('http://localhost:8080/')
..connectivityMonitor = FlutterConnectivityMonitor();
class ReadAllPage extends StatefulWidget {
const ReadAllPage({Key? key, required this.title}) : super(key: key);
final String title;
State<ReadAllPage> createState() => ReadAllPageState();
}
class ReadAllPageState extends State<ReadAllPage> {
List<Principal> _principal = [];
void initState(){
super.initState();
fetchPrincipal();
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Expanded(
child: ListView.builder(
itemCount: _principal.length,
itemBuilder: (context, index) {
return Slidable(
endActionPane: ActionPane(
motion: const ScrollMotion(),
children: [
SlidableAction(
onPressed: (context) {
deletePrincipal(_principal[index].id!);
},
icon: Icons.delete,
label: 'Delete',
),
],
),
child: ListTile(
leading: Text(_principal[index].year),
title: Text(_principal[index].event),
subtitle: Text(_principal[index].country),
),
);
},
),
),
);
}
fetchPrincipal() async {
try {
_principal = await client.newpod.getPrincipal();
setState(() {
});
}
on Exception catch (e) {
debugPrint('$e');
}
}
deletePrincipal(int id) async {
try {
var result = await client.newpod.deletePrincipal(id);
debugPrint('Delete principal status : $result');
fetchPrincipal();
} on Exception catch (e) {
debugPrint('$e');
}
}
}
できていないこと
- yearをintにすること。(なぜできないかもわかっていない)
- yearでORDER BY すること。intじゃないので、ちゃんと並ばない。
Discussion