import 'package:community_material_icon/community_material_icon.dart'; import 'package:flutter/material.dart'; import 'package:share_plus/share_plus.dart'; import 'package:url_launcher/url_launcher.dart'; import 'custom_stepper.dart'; import 'generated/i18n.dart'; import 'main_drawer.dart'; import 'models/your_location.dart'; import 'places_autocomplete_utils.dart'; class FireAlert extends StatefulWidget { const FireAlert({super.key}); static const String routeName = '/fireAlert'; @override // ignore: library_private_types_in_public_api _FireAlertState createState() => _FireAlertState(); } class _FireAlertState extends State { final GlobalKey _scaffoldKey = GlobalKey(); int _currentStep = 0; Widget buildCallButton() { return Align( alignment: const Alignment(0.0, -0.2), child: FloatingActionButton( heroTag: 'callAction', child: const Icon(Icons.call), onPressed: () async { final Uri url = Uri(scheme: 'tel', path: '112'); if (await canLaunchUrl(url)) { await launchUrl(url); } }, ), ); } Widget buildNotifyNeighboursButton() { return Align( alignment: const Alignment(0.0, -0.2), child: FloatingActionButton( heroTag: 'neighAction', child: const Icon(CommunityMaterialIcons.bullhorn), onPressed: () { ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text(S.of(context).inDevelopment), )); }, ), ); } Widget buildTweetButton() { final S strings = S.of(context); return Align( alignment: const Alignment(0.0, -0.2), child: FloatingActionButton( heroTag: 'tweetAction', child: const Icon(CommunityMaterialIcons.twitter), onPressed: () { openPlacesDialog(_scaffoldKey).then((YourLocation yourLocation) { final String where = yourLocation.description.replaceAll(' ', '').split(',')[0]; Share.shareWithResult( strings.tweetAboutSelf(yourLocation.description, '#IF$where')); }).catchError((Object onError) { if (mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(strings.errorFirePlaceDialog))); } }); }, ), ); } List listWithoutNulls(List children) => children.whereType().toList(); @override Widget build(BuildContext context) { final List fireSteps = listWithoutNulls([ CustomStep( title: Text(S.of(context).callEmergencyServicesTitle), content: Column(children: [ Text(S.of(context).callEmergencyServicesDescription), const SizedBox(height: 20.0), buildCallButton() ])), CustomStep( title: Text(S.of(context).notifyNeighbours), // state: CustomStepState.disabled, content: Column(children: [ Text(S.of(context).notifyNeighboursDescription), const SizedBox(height: 20.0), buildNotifyNeighboursButton() ])), // TODOconditional: this only in Spain CustomStep( title: Text(S.of(context).tweetAboutAFireTitle), // subtitle: new Text(S.of(context).tweetAboutAFireDescription), content: Column(children: [ Text(S.of(context).tweetAboutAFireDescription), const SizedBox(height: 20.0), buildTweetButton() ])), ]); return Scaffold( key: _scaffoldKey, appBar: AppBar(title: Text(S.of(context).notifyAFire)), drawer: MainDrawer(context, FireAlert.routeName), body: CustomStepper( currentCustomStep: _currentStep, // type: StepperType.horizontal, onCustomStepTapped: (int num) => setState(() { _currentStep = num; }), steps: fireSteps)); } }