86 lines
2.0 KiB
Dart
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),
|
|
);
|
|
},
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|