menu dialog & pdf screen, landscape ui changed.

development-design-2.0
Sikander Saleem 3 years ago
parent 2083f496b9
commit a1041637d0

@ -23,6 +23,46 @@ class AppMenuDialog extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
bool isPortrait = MediaQuery.of(context).orientation == Orientation.portrait; bool isPortrait = MediaQuery.of(context).orientation == Orientation.portrait;
Widget _operationButtons = Row(
mainAxisSize: MainAxisSize.min,
children: [
menuOptions("assets/icons/new/bookmark.svg", isPortrait).onPress(() {
Navigator.pop(context);
Navigator.pushNamed(context, BookmarkScreen.routeName);
}),
14.width,
menuOptions("assets/icons/new/zoom_in.svg", isPortrait).onPress(onFontIncrease),
14.width,
menuOptions("assets/icons/new/zoom_out.svg", isPortrait).onPress(onFontDecrease),
14.width,
menuOptions("assets/icons/new/user_acount.svg", isPortrait).onPress(() {
Navigator.pop(context);
if (AppState().isUserLogin) {
Navigator.pushNamed(context, UserProfileScreen.routeName);
} else
Navigator.pushNamed(context, LoginScreen.routeName);
}),
],
);
Widget _pdfButton = Container(
height: 26,
padding: EdgeInsets.only(right: 16, left: 12),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(32.0),
color: ColorConsts.brownLightColor,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Icon(Icons.play_arrow_outlined, size: 20, color: Colors.white),
"تصفح وتحميل الموسوعة".toText(isPortrait ? 13 : 16),
],
),
).onPress(() {
goToIndex(5);
});
return BackdropFilter( return BackdropFilter(
filter: ImageFilter.blur(sigmaX: 4, sigmaY: 4), filter: ImageFilter.blur(sigmaX: 4, sigmaY: 4),
child: Dialog( child: Dialog(
@ -38,86 +78,71 @@ class AppMenuDialog extends StatelessWidget {
color: Colors.white.withOpacity(.91), color: Colors.white.withOpacity(.91),
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
), ),
child: SingleChildScrollView( child: isPortrait
padding: EdgeInsets.all(12), ? SingleChildScrollView(
physics: BouncingScrollPhysics(), padding: EdgeInsets.all(12),
child: Column( physics: BouncingScrollPhysics(),
mainAxisSize: MainAxisSize.min, child: Column(
children: [ mainAxisSize: MainAxisSize.min,
isPortrait ? 58.height : 24.height,
menuItem("الرئيسية", "assets/icons/new/home.svg", 0),
Container(width: 50, height: 1, color: ColorConsts.greyB5Color).paddingOnly(top: 16, bottom: 16),
menuItem("عن الموسوعة", "assets/icons/new/intro.svg", 1),
Container(width: 50, height: 1, color: ColorConsts.greyB5Color).paddingOnly(top: 16, bottom: 16),
menuItem("اللجنة الإشرافية", "assets/icons/new/members.svg", 4),
Container(width: 50, height: 1, color: ColorConsts.greyB5Color).paddingOnly(top: 16, bottom: 16),
menuItem("قراءة القرآن الكريم", "assets/icons/new/quran.svg", 2),
Row(
mainAxisSize: MainAxisSize.min,
children: [
menuOptions("assets/icons/new/bookmark.svg").onPress(() {
Navigator.pop(context);
Navigator.pushNamed(context, BookmarkScreen.routeName);
}),
14.width,
menuOptions("assets/icons/new/zoom_in.svg").onPress(onFontIncrease),
14.width,
menuOptions("assets/icons/new/zoom_out.svg").onPress(onFontDecrease),
14.width,
menuOptions("assets/icons/new/user_acount.svg").onPress(() {
Navigator.pop(context);
if (AppState().isUserLogin) {
Navigator.pushNamed(context, UserProfileScreen.routeName);
} else
Navigator.pushNamed(context, LoginScreen.routeName);
}),
],
).paddingOnly(top: 32, bottom: 32),
Container(
height: 26,
padding: EdgeInsets.only(right: 16, left: 12),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(32.0),
color: ColorConsts.brownLightColor,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Icon(Icons.play_arrow_outlined, size: 20, color: Colors.white), isPortrait ? 58.height : 24.height,
"تصفح وتحميل الموسوعة".toText(13), menuItem("الرئيسية", "assets/icons/new/home.svg", 0, isPortrait),
Container(width: 50, height: 1, color: ColorConsts.greyB5Color).paddingOnly(top: 16, bottom: 16),
menuItem("عن الموسوعة", "assets/icons/new/intro.svg", 1, isPortrait),
Container(width: 50, height: 1, color: ColorConsts.greyB5Color).paddingOnly(top: 16, bottom: 16),
menuItem("اللجنة الإشرافية", "assets/icons/new/members.svg", 4, isPortrait),
Container(width: 50, height: 1, color: ColorConsts.greyB5Color).paddingOnly(top: 16, bottom: 16),
menuItem("قراءة القرآن الكريم", "assets/icons/new/quran.svg", 2, isPortrait),
_operationButtons.paddingOnly(top: 32, bottom: 32),
_pdfButton
], ],
), ),
).onPress(() { )
goToIndex(5); : Column(
}) mainAxisSize: MainAxisSize.min,
], children: [
), _operationButtons.paddingOnly(top: 20, bottom: 32),
), Row(
mainAxisSize: MainAxisSize.min,
children: [
menuItem("الرئيسية", "assets/icons/new/home.svg", 0, isPortrait),
Container(width: 1, height: 50, color: ColorConsts.greyB5Color).paddingOnly(left: 20, right: 20),
menuItem("عن الموسوعة", "assets/icons/new/intro.svg", 1, isPortrait),
Container(width: 1, height: 50, color: ColorConsts.greyB5Color).paddingOnly(left: 20, right: 20),
menuItem("اللجنة الإشرافية", "assets/icons/new/members.svg", 4, isPortrait),
Container(width: 1, height: 50, color: ColorConsts.greyB5Color).paddingOnly(left: 20, right: 20),
menuItem("قراءة القرآن الكريم", "assets/icons/new/quran.svg", 2, isPortrait),
],
),
32.height,
_pdfButton
],
).paddingAll(12),
), ),
), ),
); );
} }
Widget menuOptions(String icon) { Widget menuOptions(String icon, bool isPortrait) {
return SvgPicture.asset( return SvgPicture.asset(
icon, icon,
width: 25, width: isPortrait ? 25 : 30,
height: 25, height: isPortrait ? 25 : 30,
color: ColorConsts.greyBAColor, color: ColorConsts.greyBAColor,
); );
} }
Widget menuItem(String title, String icon, int index) { Widget menuItem(String title, String icon, int index, bool isPortrait) {
return Column( return Column(
children: [ children: [
SvgPicture.asset( SvgPicture.asset(
icon, icon,
width: 25, width: isPortrait ? 25 : 30,
height: 25, height: isPortrait ? 25 : 30,
color: ColorConsts.darkText, color: ColorConsts.darkText,
), ),
6.height, isPortrait ? 6.height : 12.height,
title.toText(13, color: ColorConsts.darkText) title.toText(isPortrait ? 13 : 16, color: ColorConsts.darkText)
], ],
).onPress(() => goToIndex(index)); ).onPress(() => goToIndex(index));
} }

@ -93,98 +93,111 @@ class _PdfListScreenState extends State<PdfListScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SizedBox( bool isPortrait = MediaQuery.of(context).orientation == Orientation.portrait;
height: double.infinity,
child: SingleChildScrollView( Widget _header = SizedBox(height: isPortrait ? null : double.infinity, width: double.infinity, child: CommonHeader("التصفح والتحميل", "assets/icons/new/pdf_bg.jpg", Color(0xffAE8646)));
physics: const AlwaysScrollableScrollPhysics(),
padding: EdgeInsets.only(bottom: 140), Widget _dataListView = contentList?.isEmpty ?? true
child: Column( ? NoDataUI()
children: [ : ListView.separated(
CommonHeader("التصفح والتحميل", "assets/icons/new/pdf_bg.jpg", Color(0xffAE8646)), physics: isPortrait ? const NeverScrollableScrollPhysics() : const AlwaysScrollableScrollPhysics(),
contentList == null shrinkWrap: isPortrait,
? SizedBox() padding: EdgeInsets.only(left: isPortrait ? 35 : 0, right: isPortrait ? 35 : 24, top: 35, bottom: 0),
: contentList.isEmpty itemCount: contentList.length,
? NoDataUI() separatorBuilder: (context, index) {
: ListView.separated( return Divider(color: Color(0xffC7C7C7), height: 1, thickness: 1).paddingOnly(top: 14, bottom: 14);
physics: const NeverScrollableScrollPhysics(), },
shrinkWrap: true, itemBuilder: (context, index) {
padding: EdgeInsets.only(left: 35, right: 35, top: 35, bottom: 0), return SizedBox(
itemCount: contentList.length, height: 50,
separatorBuilder: (context, index) { child: Row(
return Divider(color: Color(0xffC7C7C7), height: 1, thickness: 1).paddingOnly(top: 14, bottom: 14); children: [
}, SvgPicture.asset(
itemBuilder: (context, index) { "assets/icons/new/download_pdf.svg",
return SizedBox( width: 44,
height: 50, height: 50,
child: Row( ).onPress(() async {
children: [ if (Platform.isAndroid && (await DeviceInfoPlugin().androidInfo).version.sdkInt > 29) {
SvgPicture.asset( savePdfToAboveAndroid32(contentList[index].exposeFilePath, contentList[index].fileName);
"assets/icons/new/download_pdf.svg", } else {
width: 44, if (await _requestStoragePermission()) {
height: 50, startFileDownload(contentList[index].exposeFilePath, contentList[index].fileName);
).onPress(() async { } else {
if (Platform.isAndroid && (await DeviceInfoPlugin().androidInfo).version.sdkInt > 29) { Utils.showToast("يجب أن تعطي الإذن للتنزيل.");
savePdfToAboveAndroid32(contentList[index].exposeFilePath, contentList[index].fileName); }
} else { }
if (await _requestStoragePermission()) { }),
startFileDownload(contentList[index].exposeFilePath, contentList[index].fileName); 7.width,
} else { ClipRRect(
Utils.showToast("يجب أن تعطي الإذن للتنزيل."); borderRadius: BorderRadius.circular(7),
} child: Container(
} height: 50,
}), alignment: Alignment.centerRight,
7.width, decoration: BoxDecoration(
ClipRRect( color: Colors.white,
borderRadius: BorderRadius.circular(7), ),
child: Container( child: Row(
height: 50, mainAxisAlignment: MainAxisAlignment.spaceBetween,
alignment: Alignment.centerRight, children: [
decoration: BoxDecoration( Container(
color: Colors.white, width: 44,
), height: 50,
child: Row( alignment: Alignment.center,
mainAxisAlignment: MainAxisAlignment.spaceBetween, decoration: BoxDecoration(
children: [ color: ColorConsts.darkText,
Container( ),
width: 44, child: Column(
height: 50, mainAxisSize: MainAxisSize.min,
alignment: Alignment.center, children: [
decoration: BoxDecoration( Icon(Icons.zoom_out_map_rounded, color: Colors.white),
color: ColorConsts.darkText, "تصفع".toText(10),
), ],
child: Column( ),
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.zoom_out_map_rounded, color: Colors.white),
"تصفع".toText(10),
],
),
),
Directionality(
textDirection: TextDirection.rtl,
child: (contentList[index].fileName?.trim() ?? "").toText(18, color: ColorConsts.darkText).paddingOnly(left: 12, right: 12),
).expanded,
],
),
),
).onPress(() {
Navigator.pushNamed(context, PdfViewerScreen.routeName, arguments: contentList[index]);
}).expanded,
],
), ),
); Directionality(
}, textDirection: TextDirection.rtl,
child: (contentList[index].fileName?.trim() ?? "").toText(18, color: ColorConsts.darkText).paddingOnly(left: 12, right: 12),
).expanded,
],
),
), ),
if ((haqooqAlMosasa?.length ?? 0) > 0) ).onPress(() {
Column( Navigator.pushNamed(context, PdfViewerScreen.routeName, arguments: contentList[index]);
}).expanded,
],
),
);
},
);
Widget _aboutView = Column(
mainAxisSize: MainAxisSize.min,
children: [
"حقوق الموسوعة".toText(isPortrait ? 13 : 16, color: ColorConsts.greyLightColor),
for (ContentInfoDataModel text in haqooqAlMosasa) text.content.toText(13, color: ColorConsts.greyLightColor, textAlign: TextAlign.center)
],
);
return SizedBox(
height: double.infinity,
child: isPortrait
? SingleChildScrollView(
physics: const AlwaysScrollableScrollPhysics(),
padding: EdgeInsets.only(bottom: 140),
child: Column(
children: [ children: [
"حقوق الموسوعة".toText(13, color: ColorConsts.greyLightColor), _header,
for (ContentInfoDataModel text in haqooqAlMosasa) text.content.toText(13, color: ColorConsts.greyLightColor, textAlign: TextAlign.center) contentList == null ? SizedBox() : _dataListView,
if ((haqooqAlMosasa?.length ?? 0) > 0) _aboutView.paddingOnly(left: 35, right: 35, top: 35),
], ],
).paddingOnly(left: 35, right: 35, top: 35), ),
], )
), : Row(
), children: [
Expanded(child: ((haqooqAlMosasa?.length ?? 0) > 0) ? _aboutView.paddingOnly(left: 35, right: isPortrait ? 35 : 24, top: isPortrait ? 35 : 24) : SizedBox(), flex: 3),
Expanded(child: contentList == null ? SizedBox() : _dataListView, flex: 3),
Expanded(child: _header, flex: 4),
],
),
); );
} }
@ -194,7 +207,7 @@ class _PdfListScreenState extends State<PdfListScreen> {
UriPermission permissionUri = _persistedPermissionUris.first; UriPermission permissionUri = _persistedPermissionUris.first;
startFileDownloadAboveAndroid32(pathUrl, fileName, permissionUri.uri); startFileDownloadAboveAndroid32(pathUrl, fileName, permissionUri.uri);
} else { } else {
Uri selectedDocumentUris = await openDocumentTree(); Uri selectedDocumentUris = await openDocumentTree();
if (selectedDocumentUris == null) return; if (selectedDocumentUris == null) return;
savePdfToAboveAndroid32(pathUrl, fileName); savePdfToAboveAndroid32(pathUrl, fileName);
} }

Loading…
Cancel
Save