- expose legal links to screen readers on web - allow only http(s) legal URLs, prevent double submit - detect transport errors without runtimeType, keep extra in memory - ship third-party license text, document decisions Refs #1 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
26 lines
1,007 B
Dart
26 lines
1,007 B
Dart
import 'package:flutter/widgets.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:shuffle/app.dart';
|
|
import 'package:shuffle/core/config/app_config.dart';
|
|
import 'package:shuffle/core/error/global_error_handler.dart';
|
|
import 'package:shuffle/core/licenses/third_party_licenses.dart';
|
|
import 'package:shuffle/core/logging/app_logger.dart';
|
|
import 'package:shuffle/core/routing/url_strategy.dart';
|
|
import 'package:shuffle/features/auth/presentation/providers/auth_redirect.dart';
|
|
import 'package:supabase_flutter/supabase_flutter.dart';
|
|
|
|
Future<void> main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
AppLogger.configure();
|
|
registerThirdPartyLicenses();
|
|
installGlobalErrorHandlers();
|
|
configurePathUrlStrategy();
|
|
|
|
final config = AppConfig.fromEnvironment()..validate();
|
|
await Supabase.initialize(
|
|
url: config.supabaseUrl,
|
|
publishableKey: config.supabaseAnonKey,
|
|
);
|
|
|
|
runApp(ProviderScope(overrides: authOverrides(), child: const ShuffleApp()));
|
|
}
|