You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
246 lines
8.4 KiB
246 lines
8.4 KiB
import 'package:camera/camera.dart';
|
|
import 'package:teso/Pages/PageWidgets/Settings/privacy.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
import 'package:teso/Classes/TesoUser.dart';
|
|
import 'package:teso/Pages/PageWidgets/Settings/AccountSettings.dart';
|
|
import 'package:teso/Pages/PageWidgets/Settings/EditProfile.dart';
|
|
import 'package:teso/Pages/PageWidgets/Settings/terms.dart';
|
|
import 'package:teso/Pages/Sub_Pages/AccountSettings/BlockedUser.dart';
|
|
import 'package:teso/Pages/Sub_Pages/PersonalSub/Referral.dart';
|
|
import 'package:teso/providers/app_provider.dart';
|
|
import 'package:teso/providers/pageAnimations.dart';
|
|
import 'package:teso/providers/user_provider.dart';
|
|
import 'package:teso/providers/device_provider.dart';
|
|
import 'package:teso/util/consts.dart';
|
|
|
|
class Setting extends StatefulWidget {
|
|
final Function logOut;
|
|
final List<CameraDescription> connectedCameras;
|
|
const Setting({Key key, this.logOut, this.connectedCameras})
|
|
: super(key: key);
|
|
|
|
@override
|
|
_SettingState createState() => _SettingState(logOut: this.logOut);
|
|
}
|
|
|
|
class _SettingState extends State<Setting> {
|
|
Function logOut;
|
|
_SettingState({this.logOut});
|
|
bool enabled = true;
|
|
TesoUser currentUser;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
}
|
|
|
|
void editProfileDialog(context, TesoUser user) {
|
|
showModalBottomSheet(
|
|
context: context,
|
|
isScrollControlled: true,
|
|
enableDrag: true,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.vertical(top: Radius.circular(30.0)),
|
|
),
|
|
builder: (BuildContext bc) {
|
|
return EditProfile(
|
|
userProfile: user,
|
|
// connectedCameras: widget.connectedCameras,
|
|
);
|
|
});
|
|
}
|
|
|
|
void accountSettingsDialog(context) {
|
|
showModalBottomSheet(
|
|
context: context,
|
|
isScrollControlled: true,
|
|
enableDrag: true,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.vertical(top: Radius.circular(30.0)),
|
|
),
|
|
builder: (BuildContext bc) {
|
|
return AccountSettings();
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Container(
|
|
height: MediaQuery.of(context).size.height * 0.9,
|
|
child: SingleChildScrollView(
|
|
scrollDirection: Axis.vertical,
|
|
child: new Wrap(
|
|
children: <Widget>[
|
|
new Container(
|
|
margin: EdgeInsets.only(
|
|
left: 20.0,
|
|
top: 20.0,
|
|
bottom: 12.0,
|
|
),
|
|
child: Row(
|
|
children: [
|
|
Container(
|
|
child: InkWell(
|
|
onTap: () => Navigator.pop(context),
|
|
child: Icon(Icons.close),
|
|
),
|
|
),
|
|
Expanded(
|
|
child: Container(
|
|
width: double.infinity,
|
|
child: Center(
|
|
child: Text(
|
|
"Settings",
|
|
style: TextStyle(
|
|
fontSize: 20.0,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
)),
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 20.0),
|
|
child: Divider(),
|
|
),
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 20.0),
|
|
child: Text(
|
|
"Personnal Information",
|
|
style: TextStyle(fontSize: 15),
|
|
),
|
|
),
|
|
new Consumer<UserProvider>(
|
|
builder: (BuildContext context, UserProvider user, Widget child) {
|
|
if (user.currentUser == null) {
|
|
return Container();
|
|
} else {
|
|
return new ListTile(
|
|
trailing: new Icon(Icons.arrow_forward_ios),
|
|
title: new Text('Edit Profile'),
|
|
onTap: () => editProfileDialog(context, user.currentUser),
|
|
);
|
|
}
|
|
},
|
|
),
|
|
new ListTile(
|
|
trailing: new Icon(Icons.arrow_forward_ios),
|
|
title: new Text('Account settings'),
|
|
onTap: () => accountSettingsDialog(context),
|
|
),
|
|
new ListTile(
|
|
trailing: new Icon(Icons.arrow_forward_ios),
|
|
title: new Text('Refer and Earn'),
|
|
onTap: () {
|
|
Navigator.push(
|
|
context,
|
|
PageTransition(
|
|
type: PageTransitionType.rightToLeft,
|
|
child: Referrals(),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 20.0),
|
|
child: Divider(),
|
|
),
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 20.0),
|
|
child: Text("Connections"),
|
|
),
|
|
new ListTile(
|
|
trailing: new Icon(Icons.arrow_forward_ios),
|
|
title: new Text('Blocked accounts'),
|
|
onTap: () => Navigator.push(
|
|
context,
|
|
PageTransition(
|
|
child: BlockAccounts(),
|
|
type: PageTransitionType.leftToRight)),
|
|
),
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 20.0),
|
|
child: Divider(),
|
|
),
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 20.0),
|
|
child: Text("Support"),
|
|
),
|
|
new ListTile(
|
|
trailing: new Icon(Icons.arrow_forward_ios),
|
|
title: new Text('Terms of use'),
|
|
onTap: () => Navigator.push(
|
|
context,
|
|
PageTransition(
|
|
child: TermsUse(), type: PageTransitionType.leftToRight)),
|
|
),
|
|
new ListTile(
|
|
trailing: new Icon(Icons.arrow_forward_ios),
|
|
title: new Text('See Privacy Policy'),
|
|
onTap: () => Navigator.push(
|
|
context,
|
|
PageTransition(
|
|
child: Privacy(), type: PageTransitionType.leftToRight)),
|
|
),
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 20.0),
|
|
child: Divider(),
|
|
),
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 20.0),
|
|
child: Text("Actions"),
|
|
),
|
|
new Consumer<DeviceProvider>(builder:
|
|
(BuildContext context, DeviceProvider value, Widget child) {
|
|
return SwitchListTile(
|
|
secondary: Icon(Icons.camera),
|
|
title: Text(
|
|
"Coupon Alerts",
|
|
),
|
|
subtitle: Text(
|
|
"Enabling coupon alerts would you allow receive proximity coupons"),
|
|
value:
|
|
value.serviceEnabled == null ? false : value.serviceEnabled,
|
|
onChanged: (v) {
|
|
Provider.of<DeviceProvider>(context, listen: false)
|
|
.toggleBackgroundMode(context);
|
|
},
|
|
);
|
|
}),
|
|
new Consumer<UserProvider>(builder:
|
|
(BuildContext context, UserProvider value, Widget child) {
|
|
return SwitchListTile(
|
|
secondary: Icon(
|
|
Icons.dark_mode_outlined,
|
|
),
|
|
title: Text(
|
|
"Dark Mode",
|
|
),
|
|
value: Provider.of<AppProvider>(context).theme ==
|
|
Constants.lightTheme
|
|
? false
|
|
: true,
|
|
onChanged: (v) {
|
|
if (v) {
|
|
Provider.of<AppProvider>(context, listen: false)
|
|
.setTheme(Constants.darkTheme, "dark");
|
|
} else {
|
|
Provider.of<AppProvider>(context, listen: false)
|
|
.setTheme(Constants.lightTheme, "light");
|
|
}
|
|
},
|
|
);
|
|
}),
|
|
new ListTile(
|
|
title: new Text('Log out'),
|
|
onTap: () => logOut(),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|