mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-26 14:59:22 +00:00
Add user panel
This commit is contained in:
parent
d3132942bc
commit
3d0bfe6c3f
@ -1,4 +1,5 @@
|
|||||||
import 'package:comunic/ui/routes/main_route/main_route.dart';
|
import 'package:comunic/ui/routes/main_route/main_route.dart';
|
||||||
|
import 'package:comunic/ui/widgets/tablet_mode/current_user_panel.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/// Main tablet route
|
/// Main tablet route
|
||||||
@ -32,9 +33,16 @@ class _TabletRouteState extends State<TabletRoute> {
|
|||||||
children: <Widget>[_buildLeftPane(), _buildRightPane()],
|
children: <Widget>[_buildLeftPane(), _buildRightPane()],
|
||||||
);
|
);
|
||||||
|
|
||||||
Widget _buildLeftPane() => Container(
|
Widget _buildLeftPane() => Theme(
|
||||||
width: 300,
|
data: Theme.of(context).copyWith(
|
||||||
color: Color(0xFF222D32),
|
textTheme: TextTheme(body1: TextStyle(color: Colors.white))),
|
||||||
|
child: Container(
|
||||||
|
width: 300,
|
||||||
|
color: Color(0xFF222D32),
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[CurrentUserPanel()],
|
||||||
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
Widget _buildRightPane() => Container();
|
Widget _buildRightPane() => Container();
|
||||||
|
@ -42,4 +42,14 @@ abstract class SafeState<T extends StatefulWidget> extends State<T> {
|
|||||||
setState(() => onEvent(d));
|
setState(() => onEvent(d));
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Safely mimic the setTimeout javascript function
|
||||||
|
///
|
||||||
|
/// If the widget is unmounted before the end of the timeout,
|
||||||
|
/// the callback function is not called
|
||||||
|
void setTimeout(int secs, void Function() cb) {
|
||||||
|
Timer(Duration(seconds: secs), () {
|
||||||
|
if (!_unmounted) cb();
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
58
lib/ui/widgets/tablet_mode/current_user_panel.dart
Normal file
58
lib/ui/widgets/tablet_mode/current_user_panel.dart
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
import 'package:comunic/helpers/users_helper.dart';
|
||||||
|
import 'package:comunic/models/user.dart';
|
||||||
|
import 'package:comunic/ui/widgets/account_image_widget.dart';
|
||||||
|
import 'package:comunic/ui/widgets/safe_state.dart';
|
||||||
|
import 'package:comunic/utils/account_utils.dart';
|
||||||
|
import 'package:comunic/utils/ui_utils.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
/// Current user panel
|
||||||
|
///
|
||||||
|
/// @author Pierre HUBERT
|
||||||
|
|
||||||
|
class CurrentUserPanel extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_CurrentUserPanelState createState() => _CurrentUserPanelState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _CurrentUserPanelState extends SafeState<CurrentUserPanel> {
|
||||||
|
User _user;
|
||||||
|
|
||||||
|
Future<void> _refresh() async {
|
||||||
|
try {
|
||||||
|
final user = await UsersHelper().getSingleWithThrow(userID());
|
||||||
|
|
||||||
|
setState(() => _user = user);
|
||||||
|
} catch (e, s) {
|
||||||
|
print("Could not load user panel! $e\n$s");
|
||||||
|
|
||||||
|
setTimeout(5, _refresh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
height: 80,
|
||||||
|
child: Center(child: _buildContent()),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildContent() {
|
||||||
|
if (_user == null) return buildCenteredProgressBar();
|
||||||
|
|
||||||
|
return ListTile(
|
||||||
|
leading: AccountImageWidget(
|
||||||
|
user: _user,
|
||||||
|
width: 50,
|
||||||
|
),
|
||||||
|
title: Text(_user.displayName),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user