local & network files opener added.

main_design2.0
Sikander Saleem 2 years ago
parent 90aabebe12
commit 8624515433

@ -80,7 +80,7 @@ class CreateRequestPageState extends State<CreateRequestPage> {
} else { } else {
_serviceRequest = ServiceRequest(); _serviceRequest = ServiceRequest();
} }
_isLoading = true;
super.initState(); super.initState();
} }
@ -123,7 +123,10 @@ class CreateRequestPageState extends State<CreateRequestPage> {
_subtitle = AppLocalization.of(context).subtitle; _subtitle = AppLocalization.of(context).subtitle;
if (_serviceRequestsProvider == null) { if (_serviceRequestsProvider == null) {
_serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context); _serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
getServiceRequestById(widget.serviceRequest.id); if (widget.serviceRequest?.id != null) {
_isLoading = true;
getServiceRequestById(widget.serviceRequest.id);
}
} }
return Scaffold( return Scaffold(

@ -1,9 +1,13 @@
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:open_file/open_file.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
import 'package:url_launcher/url_launcher.dart';
class MultiFilesPickerItem extends StatelessWidget { class MultiFilesPickerItem extends StatelessWidget {
final File file; final File file;
@ -31,7 +35,7 @@ class MultiFilesPickerItem extends StatelessWidget {
), ),
child: MaterialButton( child: MaterialButton(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
onPressed: () { onPressed: () async {
if (isImage) { if (isImage) {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(
@ -39,7 +43,7 @@ class MultiFilesPickerItem extends StatelessWidget {
body: SafeArea( body: SafeArea(
child: Stack( child: Stack(
children: [ children: [
Center(child: isImage ? InteractiveViewer(child: Image(image: (_isLocalUrl(file.path) ? FileImage(file) : NetworkImage(file.path)))) : const SizedBox.shrink()), InteractiveViewer(child: Image(image: (_isLocalUrl(file.path) ? FileImage(file) : NetworkImage(file.path)))).center,
const ABackButton(), const ABackButton(),
], ],
), ),
@ -47,6 +51,13 @@ class MultiFilesPickerItem extends StatelessWidget {
), ),
), ),
); );
} else if (_isLocalUrl(file.path)) {
OpenFile.open(file.path);
} else {
if (!await launchUrl(Uri.parse(file.path), mode: LaunchMode.externalApplication)) {
Fluttertoast.showToast(msg: "UnExpected Error with file.");
throw Exception('Could not launch ');
}
} }
}, },
child: Align( child: Align(

@ -701,6 +701,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.2" version: "1.0.2"
open_file:
dependency: "direct main"
description:
name: open_file
sha256: a5a32d44acb7c899987d0999e1e3cbb0a0f1adebbf41ac813ec6d2d8faa0af20
url: "https://pub.dev"
source: hosted
version: "3.3.2"
package_info: package_info:
dependency: "direct main" dependency: "direct main"
description: description:

@ -64,6 +64,7 @@ dependencies:
file_picker: ^5.2.5 file_picker: ^5.2.5
record_mp3: ^2.1.0 record_mp3: ^2.1.0
path_provider: ^2.1.0 path_provider: ^2.1.0
open_file: ^3.3.2
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:

Loading…
Cancel
Save