Photo by Rodion Kutsaev on Unsplash

FlutterでTimeCrowdアプリを作る その5: 今日やったタスクの一覧

Tatsuya Tobioka
Ruffnote
Published in
4 min readJun 18, 2019

--

続きです。

本日は今日やったタスク名とチーム名の一覧を取得するところまで。

モデル

チーム名とタスク名だけを持ったクラスを作って、JSONから初期化するコンストラクターを作ります。

class Team {
Team.fromJson(Map<String, dynamic> json) {
name = json['name'];
}

String name;
}
class Task {
Task.fromJson(Map<String, dynamic> json) {
title = json['title'];
team = Team.fromJson(json['team']);
}

String title;
Team team;
}

APIを叩く

あとはAPIにアクセスして、その結果からモデルのインスタンスを作るだけです。

Future<http.Response> _fetch(String path) async {
return await http.get('https://timecrowd.net/api/v1/$path',
headers: <String, String>{'Authorization': 'Bearer $_accessToken'});
}

Future<void> _fetchDailyTasks() async {
final http.Response response = await _fetch('user/daily_activity');
final List<dynamic> decoded = json.decode(response.body)['tasks'];

setState(() {
_tasks = decoded.map((dynamic d) => Task.fromJson(d)).toList();
});
}

リスト表示

最後に、タスク一覧をリスト表示します。

ListView.separated(
itemCount: _tasks.length,
itemBuilder: (BuildContext context, int index) {
final Task task = _tasks[index];
return ListTile(
title: Text(task.title),
subtitle: Text(task.team.name),
);
},
separatorBuilder: (BuildContext context, int index) => const Divider(),
)

それっぽくなってきました。
次回以降も機能追加を続けていく予定です。

今回のコミットはこちらです。

Dart Analysisの指摘も一緒に直してしまったので、変更が多くなっています。

--

--