Skip to content

Commit 8f43ef6

Browse files
committed
profile image Ui added
1 parent 4ec3be1 commit 8f43ef6

File tree

6 files changed

+142
-1
lines changed

6 files changed

+142
-1
lines changed

assets/profile.jpeg

5.8 KB
Loading

lib/Pages/LoadingPage.dart

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import 'package:flutter/material.dart';
2+
3+
class LoadingPage extends StatefulWidget {
4+
LoadingPage({Key key}) : super(key: key);
5+
6+
@override
7+
_LoadingPageState createState() => _LoadingPageState();
8+
}
9+
10+
class _LoadingPageState extends State<LoadingPage> {
11+
@override
12+
Widget build(BuildContext context) {
13+
return Scaffold(
14+
body: Container(
15+
height: MediaQuery.of(context).size.height,
16+
width: MediaQuery.of(context).size.width,
17+
decoration: BoxDecoration(
18+
gradient: LinearGradient(
19+
colors: [Colors.white, Colors.green[200]],
20+
begin: const FractionalOffset(0.0, 1.0),
21+
end: const FractionalOffset(0.0, 1.0),
22+
stops: [0.0, 1.0],
23+
tileMode: TileMode.repeated,
24+
),
25+
),
26+
child: Center(child: Text("Dev Stack")),
27+
),
28+
);
29+
}
30+
}

lib/Profile/CreatProfile.dart

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
import 'dart:io';
2+
13
import 'package:flutter/material.dart';
4+
import 'package:image_picker/image_picker.dart';
25

36
class CreatProfile extends StatefulWidget {
47
CreatProfile({Key key}) : super(key: key);
@@ -8,13 +11,19 @@ class CreatProfile extends StatefulWidget {
811
}
912

1013
class _CreatProfileState extends State<CreatProfile> {
14+
PickedFile _imageFile;
15+
final ImagePicker _picker = ImagePicker();
1116
@override
1217
Widget build(BuildContext context) {
1318
return Scaffold(
1419
body: Padding(
1520
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 20),
1621
child: ListView(
1722
children: <Widget>[
23+
imageProfile(),
24+
SizedBox(
25+
height: 20,
26+
),
1827
nameTextField(),
1928
SizedBox(
2029
height: 20,
@@ -41,6 +50,85 @@ class _CreatProfileState extends State<CreatProfile> {
4150
);
4251
}
4352

53+
Widget imageProfile() {
54+
return Center(
55+
child: Stack(children: <Widget>[
56+
CircleAvatar(
57+
radius: 80.0,
58+
backgroundImage: _imageFile == null
59+
? AssetImage("assets/profile.jpeg")
60+
: FileImage(File(_imageFile.path)),
61+
),
62+
Positioned(
63+
bottom: 20.0,
64+
right: 20.0,
65+
child: InkWell(
66+
onTap: () {
67+
showModalBottomSheet(
68+
context: context,
69+
builder: ((builder) => bottomSheet()),
70+
);
71+
},
72+
child: Icon(
73+
Icons.camera_alt,
74+
color: Colors.teal,
75+
size: 28.0,
76+
),
77+
),
78+
),
79+
]),
80+
);
81+
}
82+
83+
Widget bottomSheet() {
84+
return Container(
85+
height: 100.0,
86+
width: MediaQuery.of(context).size.width,
87+
margin: EdgeInsets.symmetric(
88+
horizontal: 20,
89+
vertical: 20,
90+
),
91+
child: Column(
92+
children: <Widget>[
93+
Text(
94+
"Choose Profile photo",
95+
style: TextStyle(
96+
fontSize: 20.0,
97+
),
98+
),
99+
SizedBox(
100+
height: 20,
101+
),
102+
Row(mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
103+
FlatButton.icon(
104+
icon: Icon(Icons.camera),
105+
onPressed: () {
106+
takePhoto(ImageSource.camera);
107+
},
108+
label: Text("Camera"),
109+
),
110+
FlatButton.icon(
111+
icon: Icon(Icons.image),
112+
onPressed: () {
113+
takePhoto(ImageSource.gallery);
114+
},
115+
label: Text("Gallery"),
116+
),
117+
])
118+
],
119+
),
120+
);
121+
}
122+
123+
void takePhoto(ImageSource source) async {
124+
final pickedFile = await _picker.getImage(
125+
source: source,
126+
);
127+
setState(() {
128+
_imageFile = pickedFile;
129+
});
130+
}
131+
44132
Widget nameTextField() {
45133
return TextFormField(
46134
decoration: InputDecoration(

lib/main.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:blogapp/Pages/HomePage.dart';
22
import 'package:flutter/material.dart';
33
import 'package:google_fonts/google_fonts.dart';
4+
import 'Pages/LoadingPage.dart';
45
import 'Pages/WelcomePage.dart';
56
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
67

@@ -14,7 +15,7 @@ class MyApp extends StatefulWidget {
1415
}
1516

1617
class _MyAppState extends State<MyApp> {
17-
Widget page = WelcomePage();
18+
Widget page = LoadingPage();
1819
final storage = FlutterSecureStorage();
1920
@override
2021
void initState() {

pubspec.lock

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,13 @@ packages:
8383
url: "https://pub.dartlang.org"
8484
source: hosted
8585
version: "3.0.0"
86+
flutter_plugin_android_lifecycle:
87+
dependency: transitive
88+
description:
89+
name: flutter_plugin_android_lifecycle
90+
url: "https://pub.dartlang.org"
91+
source: hosted
92+
version: "1.0.8"
8693
flutter_secure_storage:
8794
dependency: "direct main"
8895
description:
@@ -123,6 +130,20 @@ packages:
123130
url: "https://pub.dartlang.org"
124131
source: hosted
125132
version: "2.1.12"
133+
image_picker:
134+
dependency: "direct main"
135+
description:
136+
name: image_picker
137+
url: "https://pub.dartlang.org"
138+
source: hosted
139+
version: "0.6.7+4"
140+
image_picker_platform_interface:
141+
dependency: transitive
142+
description:
143+
name: image_picker_platform_interface
144+
url: "https://pub.dartlang.org"
145+
source: hosted
146+
version: "1.1.0"
126147
intl:
127148
dependency: transitive
128149
description:

pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ dependencies:
3232
logger: ^0.9.1
3333
flutter_facebook_login: ^3.0.0
3434
flutter_secure_storage: ^3.3.3
35+
image_picker: ^0.6.7+4
3536

3637
dev_dependencies:
3738
flutter_test:

0 commit comments

Comments
 (0)