mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +00:00
Turn user page route into a screen
This commit is contained in:
107
lib/ui/screens/other_friends_lists_screen.dart
Normal file
107
lib/ui/screens/other_friends_lists_screen.dart
Normal file
@ -0,0 +1,107 @@
|
||||
import 'package:comunic/helpers/friends_helper.dart';
|
||||
import 'package:comunic/helpers/users_helper.dart';
|
||||
import 'package:comunic/lists/users_list.dart';
|
||||
import 'package:comunic/ui/tiles/simple_user_tile.dart';
|
||||
import 'package:comunic/utils/intl_utils.dart';
|
||||
import 'package:comunic/utils/navigation_utils.dart';
|
||||
import 'package:comunic/utils/ui_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// Other friends list route (not intended to display current user friends list)
|
||||
///
|
||||
/// @author Pierre HUBERT
|
||||
|
||||
class OtherUserFriendsListScreen extends StatefulWidget {
|
||||
final int userID;
|
||||
|
||||
const OtherUserFriendsListScreen({
|
||||
Key key,
|
||||
@required this.userID,
|
||||
}) : assert(userID != null),
|
||||
super(key: key);
|
||||
|
||||
@override
|
||||
_OtherUserFriendsListScreenState createState() =>
|
||||
_OtherUserFriendsListScreenState();
|
||||
}
|
||||
|
||||
class _OtherUserFriendsListScreenState
|
||||
extends State<OtherUserFriendsListScreen> {
|
||||
final FriendsHelper friendsHelper = FriendsHelper();
|
||||
final UsersHelper usersHelper = UsersHelper();
|
||||
|
||||
UsersList _list;
|
||||
bool _error = false;
|
||||
|
||||
String get _routeName => tr("Friends of %name%",
|
||||
args: {"name": _list.getUser(widget.userID).displayName});
|
||||
|
||||
void setError(bool e) => setState(() => _error = e);
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
super.didChangeDependencies();
|
||||
load();
|
||||
}
|
||||
|
||||
/// Load the list of friends of the user
|
||||
Future<void> load() async {
|
||||
setError(false);
|
||||
|
||||
try {
|
||||
final list = await usersHelper
|
||||
.getListWithThrow(await friendsHelper.getOtherUserList(widget.userID)
|
||||
..add(widget.userID));
|
||||
|
||||
setState(() {
|
||||
_list = list;
|
||||
});
|
||||
} catch (e, st) {
|
||||
print(e);
|
||||
print(st);
|
||||
setError(true);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (_error) return _buildError();
|
||||
|
||||
if (_list == null) return buildCenteredProgressBar();
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(_routeName),
|
||||
),
|
||||
body: ListView.builder(
|
||||
itemCount: _list.length,
|
||||
itemBuilder: (c, i) => SimpleUserTile(
|
||||
user: _list[i],
|
||||
onTap: (u) => openUserPage(
|
||||
context: context,
|
||||
userID: u.id,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildError() {
|
||||
return Scaffold(
|
||||
body: buildErrorCard(
|
||||
tr(
|
||||
"Could not get the list of friends of this user !",
|
||||
),
|
||||
actions: [
|
||||
FlatButton(
|
||||
child: Text(
|
||||
tr("Try again").toUpperCase(),
|
||||
style: TextStyle(color: Colors.white),
|
||||
),
|
||||
onPressed: load,
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user