Fix Home App Bar

main_design2.0
zaid_daoud 2 years ago
parent 905e430549
commit 0513fe1bc0

@ -2,6 +2,7 @@ import 'dart:io';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:localization/localization.dart';
import 'package:provider/provider.dart';
@ -27,6 +28,13 @@ void main() async {
} else {
await Firebase.initializeApp();
}
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(statusBarColor: Colors.transparent));
/// only portrait mode
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
runApp(ChangeNotifierProvider(create: (_) => SettingProvider(), child: const MyApp()));
}

@ -1,44 +1,58 @@
import 'package:flutter/material.dart';
import 'package:test_sa/new_views/common_widgets/app_bar/user_image.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'notification_icon.dart';
import '../../app_style/app_color.dart';
class HomeAppBar extends StatefulWidget implements PreferredSizeWidget {
final int notificationCount;
final String userImage;
class HomeAppBar extends StatelessWidget implements PreferredSizeWidget {
final GlobalKey<ScaffoldState> scaffoldKey;
const HomeAppBar({Key key, this.notificationCount, this.userImage, this.scaffoldKey}) : super(key: key);
const HomeAppBar({Key key, this.scaffoldKey}) : super(key: key);
@override
State<HomeAppBar> createState() => _AppBarState();
Size get preferredSize => Size.fromHeight(60.toScreenHeight);
@override
Size get preferredSize => const Size.fromHeight(60);
}
class _AppBarState extends State<HomeAppBar> {
@override
Widget build(BuildContext context) {
return AppBar(
automaticallyImplyLeading: false,
elevation: 0,
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
InkWell(
onTap: () {
widget.scaffoldKey.currentState.openDrawer();
},
child: UserImage(
url: widget.userImage,
),
return Padding(
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth),
child: AppBar(
automaticallyImplyLeading: false,
elevation: 0,
leadingWidth: 48.toScreenWidth,
leading: InkWell(
onTap: () {
scaffoldKey.currentState.openDrawer();
},
child: CircleAvatar(child: Image.network("", fit: BoxFit.fill)),
),
actions: [
Stack(
children: <Widget>[
const Icon(
Icons.notifications,
color: AppColor.neutral20,
size: 34,
),
NotificationIcon(
notificationCount: 3,
)
///TODO [zaid] : put notifications count rather than number 1
if (1 != 0)
PositionedDirectional(
end: 0,
top: 0,
child: Container(
height: 20.toScreenWidth,
width: 20.toScreenWidth,
padding: const EdgeInsets.all(1),
decoration: BoxDecoration(
color: AppColor.red50,
borderRadius: BorderRadius.circular(10),
),
child: Text(
(1).toString(),
style: Theme.of(context).textTheme.bodySmall?.copyWith(fontWeight: FontWeight.w500, color: AppColor.neutral30),
textAlign: TextAlign.center,
),
),
),
],
),
],

@ -1,36 +0,0 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import '../../app_style/app_color.dart';
class NotificationIcon extends StatelessWidget {
int notificationCount;
NotificationIcon({Key key, this.notificationCount}) : super(key: key);
@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
Icon(Icons.notifications, size: 36, ),
if(notificationCount != null)
Positioned(
right: 0,
child: Container(
height: 20,
width: 20,
padding: EdgeInsets.all(1),
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(10),
),
child: Text(
notificationCount.toString(),
style: Theme.of(context).textTheme.bodyMedium?.copyWith(fontWeight: FontWeight.w500,color: AppColor.neutral30),
textAlign: TextAlign.center,
),
),
)
],
);
}
}

@ -1,18 +0,0 @@
import 'package:flutter/material.dart';
class UserImage extends StatelessWidget {
String url;
UserImage({Key key, @required this.url}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox(
height: 48,
width: 48,
child: CircleAvatar(
//backgroundColor: Colors.transparent,
child: Image.network(url??''),
//backgroundImage: NetworkImage(url),
));
}
}
Loading…
Cancel
Save