Files
fcs/lib/fcs/common/pages/contact/contact_page.dart

132 lines
4.2 KiB
Dart
Raw Normal View History

2020-09-07 16:05:28 +06:30
import 'package:fcs/fcs/common/domain/entities/setting.dart';
import 'package:fcs/fcs/common/domain/vo/contact.dart';
import 'package:fcs/fcs/common/helpers/theme.dart';
import 'package:fcs/fcs/common/localization/app_translations.dart';
import 'package:fcs/fcs/common/pages/contact/contact_editor.dart';
import 'package:fcs/fcs/common/pages/model/main_model.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:package_info/package_info.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart';
import 'widgets.dart';
class ContactPage extends StatefulWidget {
@override
_ContactPageState createState() => _ContactPageState();
}
class _ContactPageState extends State<ContactPage> {
@override
Widget build(BuildContext context) {
Setting setting = Provider.of<MainModel>(context).setting;
2020-09-11 16:14:36 +06:30
bool isEditable = context.select((MainModel m) => m.contactEditable());
2020-09-07 16:05:28 +06:30
return Scaffold(
2020-09-11 16:14:36 +06:30
body: CustomScrollView(slivers: [
SliverAppBar(
leading: IconButton(
icon: Icon(
CupertinoIcons.back,
size: 30,
2020-09-07 16:05:28 +06:30
),
2020-09-11 16:14:36 +06:30
onPressed: () => Navigator.of(context).pop(),
),
backgroundColor: primaryColor,
2020-09-15 07:13:41 +06:30
expandedHeight: 100.0,
2020-09-11 16:14:36 +06:30
floating: false,
pinned: true,
flexibleSpace: FlexibleSpaceBar(
centerTitle: true,
titlePadding: EdgeInsets.symmetric(vertical: 10),
title: Text(AppTranslations.of(context).text('contact.title'),
style: TextStyle(
color: Colors.white,
)),
),
actions: isEditable
? [
IconButton(
onPressed: () =>
Navigator.of(context).push<void>(CupertinoPageRoute(
builder: (context) => ContactEditor(
contact: Contact.fromSetting(setting),
),
)),
icon: Icon(
CupertinoIcons.pen,
color: Colors.white,
))
]
: [],
),
SliverList(
delegate: SliverChildListDelegate([
itemTitle(context, "contact.callus"),
contactItem(context, setting.usaContactNumber, CupertinoIcons.phone,
onTap: () => _call(setting.usaContactNumber),
labelKey: "contact.usa.phone"),
contactItem(
context,
setting.mmContactNumber,
CupertinoIcons.phone,
onTap: () => _call(
2020-09-07 16:05:28 +06:30
setting.mmContactNumber,
),
2020-09-11 16:14:36 +06:30
labelKey: "contact.mm.phone",
),
itemTitle(context, "contact.findus"),
contactItem(
context,
setting.usaAddress,
CupertinoIcons.location,
labelKey: "contact.usa.address",
),
contactItem(
context,
setting.mmAddress,
CupertinoIcons.location,
labelKey: "contact.mm.address",
),
itemTitle(context, "contact.emailus"),
contactItem(
context,
setting.emailAddress,
CupertinoIcons.mail,
onTap: () => _email(setting.emailAddress),
labelKey: "contact.fcs.email",
),
itemTitle(context, "contact.visitus"),
contactItem(
context,
setting.facebookLink,
FontAwesomeIcons.facebook,
onTap: () => _opencontactItem(setting.facebookLink),
labelKey: "contact.facebook",
),
]))
]),
2020-09-07 16:05:28 +06:30
);
}
Future<String> getVersionNumber() async {
PackageInfo packageInfo = await PackageInfo.fromPlatform();
String version = packageInfo.version + "+" + packageInfo.buildNumber;
return version;
}
_call(String phone) {
launch("tel:$phone");
}
_email(String email) {
launch("mailto:$email");
}
_opencontactItem(String contactItem) {
launch("$contactItem");
}
}