Upgrade Stripe con addebito immediato; downgrade programmato a fine periodo. UX billing più sobria con box info; icone piani. API inviti e OAuth YouTube per staff trasmissione; deep link join; scelta partita programmata o nuova. Co-authored-by: Cursor <cursoragent@cursor.com>
42 lines
1.2 KiB
Dart
42 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:intl/date_symbol_data_local.dart';
|
|
|
|
import 'app/router.dart';
|
|
import 'app/theme.dart';
|
|
import 'core/deep_link_listener.dart';
|
|
|
|
Future<void> main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
await initializeDateFormatting('it_IT', null);
|
|
await SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
|
|
SystemChrome.setSystemUIOverlayStyle(
|
|
const SystemUiOverlayStyle(
|
|
statusBarColor: Colors.transparent,
|
|
systemNavigationBarColor: Colors.transparent,
|
|
statusBarIconBrightness: Brightness.light,
|
|
systemNavigationBarIconBrightness: Brightness.light,
|
|
),
|
|
);
|
|
runApp(const ProviderScope(child: MatchLiveTvApp()));
|
|
}
|
|
|
|
class MatchLiveTvApp extends ConsumerWidget {
|
|
const MatchLiveTvApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final router = ref.watch(routerProvider);
|
|
|
|
return DeepLinkListener(
|
|
child: MaterialApp.router(
|
|
title: 'Match Live TV',
|
|
debugShowCheckedModeBanner: false,
|
|
theme: AppTheme.dark,
|
|
routerConfig: router,
|
|
),
|
|
);
|
|
}
|
|
}
|