mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-10-31 18:24:23 +00:00 
			
		
		
		
	Add user panel
This commit is contained in:
		| @@ -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), | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user