import 'package:flutter/material.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:messaging_app/components/messaging_provider.dart'; import 'package:messaging_app/models/users.dart'; import 'package:messaging_app/service/snackbar_service.dart'; import 'package:provider/provider.dart'; // ignore: must_be_immutable class ProfilePage extends StatelessWidget { // final double _deviceHeight; final double _deviceWidth; MessagingProviders _auth = MessagingProviders.instance; ProfilePage(this._deviceHeight, this._deviceWidth, {super.key}); @override Widget build(BuildContext context) { return SizedBox( height: _deviceHeight, width: _deviceWidth, child: ChangeNotifierProvider.value( value: _auth, child: _profilePageUI(), ), ); } Widget _profilePageUI() { return Builder(builder: (BuildContext _context) { // assert(_auth.user != null); SnackBarService.instance.buildContext = _context; _auth = Provider.of(_context); return StreamBuilder( stream: _auth.getUser(_auth.user!.$id), builder: (_, _snapshot) { var _userData = _snapshot.data; return _snapshot.hasData ? Align( child: SizedBox( height: _deviceHeight * 0.50, child: Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.center, children: [ _userImageWidget(_userData!.image), _userNameWidget(_userData.name), _userEmailWidget(_userData.email), _logoutButton(), ], ), ), ) : SpinKitWanderingCubes( color: Colors.blue, size: 50.0, ); }); }); } Widget _userImageWidget(String _image) { double _imageRadius = _deviceHeight * 0.20; return Container( height: _imageRadius, width: _imageRadius, decoration: BoxDecoration( borderRadius: BorderRadius.circular(_imageRadius), image: DecorationImage( fit: BoxFit.fill, image: NetworkImage(_image), ), ), ); } Widget _userNameWidget(String _name) { return SizedBox( height: _deviceHeight * 0.05, width: _deviceWidth, child: Text( _name, textAlign: TextAlign.center, style: TextStyle( color: Colors.white, fontSize: 30, ), ), ); } Widget _userEmailWidget(String _email) { return SizedBox( height: _deviceHeight * 0.03, width: _deviceWidth, child: Text( _email, textAlign: TextAlign.center, style: TextStyle( color: Colors.white24, fontSize: 15, ), ), ); } Widget _logoutButton() { return SizedBox( height: _deviceHeight * 0.06, width: _deviceWidth * 0.80, child: MaterialButton( onPressed: () { _auth.logout(); }, color: Colors.red, child: Text( "logout".toUpperCase(), style: TextStyle( fontSize: 18, fontWeight: FontWeight.w700, ), ), ), ); } }