jld3103
1 year ago
5 changed files with 99 additions and 1 deletions
@ -0,0 +1,64 @@ |
|||||||
|
import 'dart:async'; |
||||||
|
|
||||||
|
import 'package:flutter/material.dart'; |
||||||
|
import 'package:neon/blocs.dart'; |
||||||
|
import 'package:neon/l10n/localizations.dart'; |
||||||
|
import 'package:neon/src/router.dart'; |
||||||
|
import 'package:provider/provider.dart'; |
||||||
|
import 'package:url_launcher/url_launcher.dart'; |
||||||
|
|
||||||
|
class RouteNotFoundPage extends StatefulWidget { |
||||||
|
const RouteNotFoundPage({ |
||||||
|
required this.uri, |
||||||
|
super.key, |
||||||
|
}); |
||||||
|
|
||||||
|
final Uri uri; |
||||||
|
|
||||||
|
@override |
||||||
|
State<RouteNotFoundPage> createState() => _RouteNotFoundPageState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _RouteNotFoundPageState extends State<RouteNotFoundPage> { |
||||||
|
@override |
||||||
|
void initState() { |
||||||
|
super.initState(); |
||||||
|
|
||||||
|
unawaited(_checkLaunchable()); |
||||||
|
} |
||||||
|
|
||||||
|
Future _checkLaunchable() async { |
||||||
|
final accountsBloc = Provider.of<AccountsBloc>(context, listen: false); |
||||||
|
if (!accountsBloc.hasAccounts) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
final activeAccount = accountsBloc.activeAccount.value!; |
||||||
|
|
||||||
|
final launched = await launchUrl( |
||||||
|
activeAccount.completeUri(widget.uri), |
||||||
|
mode: LaunchMode.externalApplication, |
||||||
|
); |
||||||
|
if (!launched) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if (context.mounted) { |
||||||
|
const HomeRoute().go(context); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@override |
||||||
|
Widget build(final BuildContext context) => Scaffold( |
||||||
|
appBar: AppBar( |
||||||
|
leading: CloseButton( |
||||||
|
onPressed: () { |
||||||
|
const HomeRoute().go(context); |
||||||
|
}, |
||||||
|
), |
||||||
|
), |
||||||
|
body: Center( |
||||||
|
child: Text(AppLocalizations.of(context).errorRouteNotFound(widget.uri.toString())), |
||||||
|
), |
||||||
|
); |
||||||
|
} |
Loading…
Reference in new issue