improvements, all finish.

development-design-2.0
Sikander Saleem 3 years ago
parent 3c56c4889c
commit fe75109017

@ -1,4 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.cloudsolutions.tangheem"> package="com.cloudsolutions.tangheem">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that <!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method. calls FlutterMain.startInitialization(this); in its onCreate method.
@ -19,10 +20,10 @@
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:exported="true"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:launchMode="singleTop" android:launchMode="singleTop"
android:theme="@style/LaunchTheme" android:theme="@style/LaunchTheme"
android:exported="true"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as <!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user the Android process has started. This theme is visible to the user

@ -109,6 +109,8 @@ class Utils {
} }
static void downloadFile(String url, String path, {Function(bool) onResponse}) { static void downloadFile(String url, String path, {Function(bool) onResponse}) {
print("url:$url");
print("path:$path");
var httpClient = http.Client(); var httpClient = http.Client();
var request = http.Request('GET', Uri.parse(url)); var request = http.Request('GET', Uri.parse(url));
var response = httpClient.send(request); var response = httpClient.send(request);
@ -139,11 +141,13 @@ class Utils {
bytes.setRange(offset, offset + chunk.length, chunk); bytes.setRange(offset, offset + chunk.length, chunk);
offset += chunk.length; offset += chunk.length;
} }
print("file writeAsBytes:${bytes.length}");
await file.writeAsBytes(bytes); await file.writeAsBytes(bytes);
onResponse(true); onResponse(true);
return; return;
}, onError: (ex) { }, onError: (ex) {
debugPrint("onError:$ex"); debugPrint("onError:$ex");
onResponse(false);
}, cancelOnError: true); }, cancelOnError: true);
}).onError((ex) { }).onError((ex) {
debugPrint("onError:$ex"); debugPrint("onError:$ex");

@ -124,6 +124,7 @@ class _CommonHomeParentState extends State<CommonHomeParent> {
child: Stack( child: Stack(
children: [ children: [
screens[index], screens[index],
if(MediaQuery.of(context).viewInsets.bottom == 0)
Align( Align(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: Column( child: Column(

@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart'; import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';
import 'package:tangheem/api/tangheem_user_api_client.dart'; import 'package:tangheem/api/tangheem_user_api_client.dart';
import 'package:tangheem/app_state/app_state.dart'; import 'package:tangheem/app_state/app_state.dart';
@ -83,6 +84,11 @@ class _PdfListScreenState extends State<PdfListScreen> {
} }
} }
Future<bool> _requestStoragePermission() async {
Map<Permission, PermissionStatus> statuses = await [Permission.storage].request();
return statuses[Permission.storage].isGranted;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SizedBox( return SizedBox(
@ -114,8 +120,12 @@ class _PdfListScreenState extends State<PdfListScreen> {
"assets/icons/new/download_pdf.svg", "assets/icons/new/download_pdf.svg",
width: 44, width: 44,
height: 50, height: 50,
).onPress(() { ).onPress(() async {
if (await _requestStoragePermission()) {
startFileDownload(contentList[index].exposeFilePath, contentList[index].fileName); startFileDownload(contentList[index].exposeFilePath, contentList[index].fileName);
} else {
Utils.showToast("يجب أن تعطي الإذن للتنزيل.");
}
}), }),
7.width, 7.width,
ClipRRect( ClipRRect(
@ -194,6 +204,5 @@ class PdfViewerScreen extends StatelessWidget {
pageSpacing: 0, pageSpacing: 0,
// pageLayoutMode:PdfPageLayoutMode.single // pageLayoutMode:PdfPageLayoutMode.single
); );
} }
} }

Loading…
Cancel
Save