import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; import 'package:hiddify/core/core_providers.dart'; import 'package:hiddify/core/prefs/prefs.dart'; import 'package:hiddify/domain/constants.dart'; import 'package:hiddify/features/common/common.dart'; import 'package:hiddify/gen/assets.gen.dart'; import 'package:hiddify/utils/utils.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sliver_tools/sliver_tools.dart'; class IntroPage extends HookConsumerWidget with PresLogger { const IntroPage({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final t = ref.watch(translationsProvider); return Scaffold( body: CustomScrollView( shrinkWrap: true, slivers: [ const SliverGap(24), SliverToBoxAdapter( child: SizedBox( width: 248, height: 248, child: Padding( padding: const EdgeInsets.all(36), child: Assets.images.logo.svg(), ), ), ), SliverCrossAxisConstrained( maxCrossAxisExtent: 368, child: MultiSliver( children: [ const LocalePrefTile(), const SliverGap(8), const RegionPrefTile(), const SliverGap(8), const EnableAnalyticsPrefTile(), const SliverGap(8), Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: Text.rich( t.intro.termsAndPolicyCaution( tap: (text) => TextSpan( text: text, style: const TextStyle(color: Colors.blue), recognizer: TapGestureRecognizer() ..onTap = () async { await UriUtils.tryLaunch( Uri.parse(Constants.termsAndConditionsUrl), ); }, ), ), style: Theme.of(context).textTheme.bodySmall, ), ), Padding( padding: const EdgeInsets.symmetric( horizontal: 16, vertical: 24, ), child: FilledButton( onPressed: () async { if (!ref.read(enableAnalyticsProvider)) { loggy.info("disabling analytics per user request"); try { await Sentry.close(); } catch (error, stackTrace) { loggy.error( "could not disable analytics", error, stackTrace, ); } } await ref .read(introCompletedProvider.notifier) .update(true); }, child: Text(t.intro.start), ), ), ], ), ), ], ), ); } }