i created a designed profile page for users i need a help to code a function to let the users select photo from their device when the click on my add button and i need to save that image data to my database
i just need to open up gallery and let the user select photo and it should save to my data base when she click on add button
this is the code of my profile page
class ProfileWidget extends StatefulWidget {
final GlobalKey<ScaffoldState> parentScaffoldKey;
ProfileWidget({Key key, this.parentScaffoldKey}) : super(key: key);
@override
_ProfileWidgetState createState() => _ProfileWidgetState();
}
class _ProfileWidgetState extends StateMVC<ProfileWidget> {
ProfileController _con;
_ProfileWidgetState() : super(ProfileController()) {
_con = controller;
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: _con.scaffoldKey,
body: currentUser.value.apiToken == null
? PermissionDeniedWidget()
: SingleChildScrollView(
// padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 10),
child: Column(
children: <Widget>[
ProfileAvatarWidget(user: currentUser.value),
ListTile(
contentPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
leading: Icon(
Icons.shopping_basket,
color: Theme.of(context).hintColor,
),
title: Text(
S.of(context).recent_orders,
style: Theme.of(context).textTheme.headline4,
),
),
_con.recentOrders.isEmpty
? EmptyOrdersWidget()
: ListView.separated(
scrollDirection: Axis.vertical,
shrinkWrap: true,
primary: false,
itemCount: _con.recentOrders.length,
itemBuilder: (context, index) {
var _order = _con.recentOrders.elementAt(index);
return OrderItemWidget(expanded: index == 0 ? true : false, order: _order);
},
separatorBuilder: (context, index) {
return SizedBox(height: 20);
},
),
],
),
),
);
}
}
code of profile avatar widget
class ProfileAvatarWidget extends StatelessWidget {
final User user;
ProfileAvatarWidget({
Key key,
this.user,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(vertical: 30),
decoration: BoxDecoration(
color: Theme.of(context).accentColor,
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(30), bottomRight: Radius.circular(30)),
),
child: Column(
children: <Widget>[
Container(
height: 160,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
SizedBox(
width: 50,
height: 50,
child: FlatButton(
padding: EdgeInsets.all(0),
onPressed: () {},
child: Icon(Icons.add, color: Theme.of(context).primaryColor),
color: Theme.of(context).accentColor,
shape: StadiumBorder(),
),
),
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(300)),
child: CachedNetworkImage(
height: 135,
width: 135,
fit: BoxFit.cover,
imageUrl: user.image?.url,
placeholder: (context, url) => Image.asset(
'assets/img/loading.gif',
fit: BoxFit.cover,
height: 135,
width: 135,
),
errorWidget: (context, url, error) => Icon(Icons.error),
),
),
Users dart
import '../helpers/custom_trace.dart';
import '../models/media.dart';
enum UserState { available, away, busy }
class User {
String id;
String name;
String email;
String password;
String apiToken;
String deviceToken;
String phone;
String address;
String bio;
Media image;
question from:
https://stackoverflow.com/questions/65642277/add-profile-picture-on-on-pressed-flutter