|
|
|
@ -9,6 +9,7 @@ import 'package:watermanagement/login.dart';
|
|
|
|
|
import 'package:watermanagement/settings.dart';
|
|
|
|
|
import 'package:image_picker/image_picker.dart';
|
|
|
|
|
import 'package:watermanagement/tankersview.dart';
|
|
|
|
|
import 'dart:convert';
|
|
|
|
|
import 'dart:io';
|
|
|
|
|
import 'package:watermanagement/updateprofile.dart';
|
|
|
|
|
import 'booking_requests.dart';
|
|
|
|
@ -91,16 +92,18 @@ class _DashboardState extends State<Dashboard> {
|
|
|
|
|
|
|
|
|
|
Future pickImageFromGallery() async {
|
|
|
|
|
try {
|
|
|
|
|
final image = await _picker.pickImage(source: ImageSource.gallery);
|
|
|
|
|
if (image == null) return;
|
|
|
|
|
final imageTemp = File(image.path);
|
|
|
|
|
final image = await _picker.pickImage(source: ImageSource.gallery);
|
|
|
|
|
if (image == null) return;
|
|
|
|
|
final imageTemp = File(image.path);
|
|
|
|
|
|
|
|
|
|
AppSettings.preLoaderDialog(context);
|
|
|
|
|
var res = await AppSettings.uploadImageHTTPNew(image);
|
|
|
|
|
print(jsonDecode(res));
|
|
|
|
|
Navigator.of(context, rootNavigator: true).pop();
|
|
|
|
|
setState(() {
|
|
|
|
|
AppSettings.updatedImage = imageTemp;
|
|
|
|
|
AppSettings.profilePictureUrl = jsonDecode(res)['picture'];
|
|
|
|
|
});
|
|
|
|
|
uploadProfileApi(image.path);
|
|
|
|
|
AppSettings.saveProfile(image.path);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AppSettings.saveData('profile', jsonDecode(res)['picture'], 'STRING');
|
|
|
|
|
} on PlatformException catch (e) {
|
|
|
|
|
print('Failed to pick image: $e');
|
|
|
|
|
}
|
|
|
|
@ -111,13 +114,14 @@ class _DashboardState extends State<Dashboard> {
|
|
|
|
|
final image = await _picker.pickImage(source: ImageSource.camera);
|
|
|
|
|
if (image == null) return;
|
|
|
|
|
final imageTemp = File(image.path);
|
|
|
|
|
AppSettings.preLoaderDialog(context);
|
|
|
|
|
var res = await AppSettings.uploadImageHTTPNew(image);
|
|
|
|
|
print(jsonDecode(res));
|
|
|
|
|
Navigator.of(context, rootNavigator: true).pop();
|
|
|
|
|
setState(() {
|
|
|
|
|
AppSettings.updatedImage = imageTemp;
|
|
|
|
|
AppSettings.profilePictureUrl = jsonDecode(res)['picture'];
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
uploadProfileApi(image.path);
|
|
|
|
|
AppSettings.saveProfile(image.path);
|
|
|
|
|
|
|
|
|
|
AppSettings.saveData('profile', jsonDecode(res)['picture'], 'STRING');
|
|
|
|
|
} on PlatformException catch (e) {
|
|
|
|
|
print('Failed to pick image: $e');
|
|
|
|
|
}
|
|
|
|
@ -428,59 +432,76 @@ class _DashboardState extends State<Dashboard> {
|
|
|
|
|
children: [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Expanded(child: GestureDetector(
|
|
|
|
|
child: Container(
|
|
|
|
|
width: MediaQuery.of(context).size.width * .20,
|
|
|
|
|
height: MediaQuery.of(context).size.height * .15,
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
shape: BoxShape.circle,
|
|
|
|
|
Expanded(
|
|
|
|
|
child: GestureDetector(
|
|
|
|
|
child: Container(
|
|
|
|
|
width: (MediaQuery.of(context).size.width > 600)
|
|
|
|
|
? MediaQuery.of(context).size.width * .30
|
|
|
|
|
: MediaQuery.of(context).size.width * .60, // Adjusted width for tablet
|
|
|
|
|
height: (MediaQuery.of(context).size.width > 600)
|
|
|
|
|
? MediaQuery.of(context).size.height * .25
|
|
|
|
|
: MediaQuery.of(context).size.height * .50, // Adjusted height for tablet
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
shape: BoxShape.rectangle,
|
|
|
|
|
border: Border.all(width: 2, color: Colors.blueGrey),
|
|
|
|
|
image: DecorationImage(
|
|
|
|
|
image: (AppSettings.updatedImage != null) ? FileImage(AppSettings.updatedImage!) as ImageProvider : AssetImage("images/profile_pic.png"), // picked file
|
|
|
|
|
fit: BoxFit.cover)),
|
|
|
|
|
),
|
|
|
|
|
onTap: () {
|
|
|
|
|
showModalBottomSheet<void>(
|
|
|
|
|
context: context,
|
|
|
|
|
builder: (BuildContext context) {
|
|
|
|
|
return SizedBox(
|
|
|
|
|
height: 200,
|
|
|
|
|
child: Center(
|
|
|
|
|
child: Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
GestureDetector(
|
|
|
|
|
child: Icon(
|
|
|
|
|
Icons.camera_alt_outlined,
|
|
|
|
|
size: 100,
|
|
|
|
|
color: greyColor,
|
|
|
|
|
image: (AppSettings.profilePictureUrl != '' &&
|
|
|
|
|
AppSettings.profilePictureUrl != 'null')
|
|
|
|
|
? NetworkImage(AppSettings.profilePictureUrl) as ImageProvider
|
|
|
|
|
: AssetImage(" images/profile_pic.png"), // picked file
|
|
|
|
|
fit: BoxFit.fitWidth,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
onTap: () {
|
|
|
|
|
showModalBottomSheet<void>(
|
|
|
|
|
context: context,
|
|
|
|
|
builder: (BuildContext context) {
|
|
|
|
|
return SizedBox(
|
|
|
|
|
height: 200,
|
|
|
|
|
child: Center(
|
|
|
|
|
child: Row(
|
|
|
|
|
mainAxisAlignment:
|
|
|
|
|
MainAxisAlignment.center,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
GestureDetector(
|
|
|
|
|
child: Icon(
|
|
|
|
|
Icons.camera_alt_outlined,
|
|
|
|
|
size: 100,
|
|
|
|
|
color: greyColor,
|
|
|
|
|
),
|
|
|
|
|
onTap: () async {
|
|
|
|
|
await takeImageFromCamera();
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
width: MediaQuery.of(context)
|
|
|
|
|
.size
|
|
|
|
|
.width *
|
|
|
|
|
.20,
|
|
|
|
|
),
|
|
|
|
|
onTap: () async {
|
|
|
|
|
await takeImageFromCamera();
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
width:
|
|
|
|
|
MediaQuery.of(context).size.width * .20,
|
|
|
|
|
),
|
|
|
|
|
GestureDetector(
|
|
|
|
|
child: Icon(
|
|
|
|
|
Icons.photo,
|
|
|
|
|
size: 100,
|
|
|
|
|
color: greyColor,
|
|
|
|
|
GestureDetector(
|
|
|
|
|
child: Icon(
|
|
|
|
|
Icons.photo,
|
|
|
|
|
size: 100,
|
|
|
|
|
color: greyColor,
|
|
|
|
|
),
|
|
|
|
|
onTap: () async {
|
|
|
|
|
await pickImageFromGallery();
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
onTap: () async {
|
|
|
|
|
await pickImageFromGallery();
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
),),
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
Text(
|
|
|
|
|
AppSettings.suppliername,
|
|
|
|
|