DeskWatch/desk_watch/lib/ListViewController.dart
2022-04-10 15:46:34 +02:00

86 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
class FriendItem {
final String name;
final Widget place;
FriendItem(this.name, this.place);
Widget buildTitle(BuildContext context) {
return Text(name);
}
Widget returnIcon(BuildContext context) {
return place;
}
factory FriendItem.fromJson(Map<String, dynamic> json) {
Widget tempPlace;
if (json['location'] == 'home') {
tempPlace = Icon(Icons.home);
} else if (json['location'] == 'work') {
tempPlace = Icon(Icons.business_center);
} else {
tempPlace = Icon(Icons.visibility_off);
}
return FriendItem(json['username'], tempPlace);
}
}
class ListViewController extends StatefulWidget {
ListViewController({
Key? key,
}) : super(key: key);
@override
State<ListViewController> createState() => _ListViewControllerState();
}
class _ListViewControllerState extends State<ListViewController> {
var friends = [];
@override
void initState() {
refreshFriends();
super.initState();
}
Future refreshFriends() async {
Uri sampleFriendsURI =
Uri.parse('https://chiseled-spotted-individual.glitch.me/rand');
//https://glitch.com/edit/#!/chiseled-spotted-individual
final response = await http.get(sampleFriendsURI);
var data = json.decode(response.body);
friends = [];
var _friendsTemp = [];
for (var i = 0; i < data.length; i++) {
_friendsTemp.add(FriendItem.fromJson(data[i]));
}
setState(() {
friends = _friendsTemp;
});
}
@override
Widget build(BuildContext context) {
return Expanded(
child: RefreshIndicator(
onRefresh: refreshFriends,
child: ListView.builder(
itemCount: friends.length,
itemBuilder: (context, index) {
return ListTile(
leading: friends[index].place,
title: friends[index].buildTitle(context),
);
},
),
),
);
}
}