import 'package:fcs/domain/entities/setting.dart'; import 'package:fcs/domain/vo/contact.dart'; import 'package:fcs/helpers/theme.dart'; import 'package:fcs/pages/contact/contact_editor.dart'; import 'package:fcs/pages/main/model/main_model.dart'; import 'package:fcs/pages/widgets/local_app_bar.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 { @override Widget build(BuildContext context) { Setting? setting = Provider.of(context).setting; if (setting == null) return Container(); bool isEditable = context.select((MainModel m) => m.contactEditable()); return Scaffold( appBar: LocalAppBar( labelKey: "contact.title", backgroundColor: Colors.white, labelColor: primaryColor, arrowColor: primaryColor, actions: isEditable ? [ IconButton( onPressed: () => Navigator.of(context).push(CupertinoPageRoute( builder: (context) => ContactEditor( contact: Contact.fromSetting(setting)), )), icon: Icon( Icons.edit, color: primaryColor, )) ] : [], ), body: ListView( children: [ 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( setting.mmContactNumber ?? "", ), 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", ), const SizedBox(height: 30) ], ), ); } Future getVersionNumber() async { PackageInfo packageInfo = await PackageInfo.fromPlatform(); String version = packageInfo.version + "+" + packageInfo.buildNumber; return version; } _call(String phone) { launch("tel:${phone.trim().replaceAll(' ', '')}"); } _email(String email) { launch("mailto:$email"); } _opencontactItem(String contactItem) { launch("$contactItem"); } }