diff --git a/analysis_options.yaml b/analysis_options.yaml index 54295378..6de1bcc6 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -12,6 +12,7 @@ linter: analyzer: errors: todo: ignore + import_of_legacy_library_into_null_safe: ignore exclude: - lib/generated_plugin_registrant.dart - lib/l10n/*.dart diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart index 0d960990..76cb183f 100644 --- a/lib/config/app_config.dart +++ b/lib/config/app_config.dart @@ -1,3 +1,5 @@ +//@dart=2.12 + import 'dart:ui'; import 'package:matrix/matrix.dart'; @@ -5,8 +7,8 @@ import 'package:matrix/matrix.dart'; abstract class AppConfig { static String _applicationName = 'FluffyChat'; static String get applicationName => _applicationName; - static String _applicationWelcomeMessage; - static String get applicationWelcomeMessage => _applicationWelcomeMessage; + static String? _applicationWelcomeMessage; + static String? get applicationWelcomeMessage => _applicationWelcomeMessage; static String _defaultHomeserver = 'matrix.org'; static String get defaultHomeserver => _defaultHomeserver; static String jitsiInstance = 'https://meet.jit.si/'; diff --git a/lib/config/app_emojis.dart b/lib/config/app_emojis.dart index 3c38e2fa..18323af5 100644 --- a/lib/config/app_emojis.dart +++ b/lib/config/app_emojis.dart @@ -1,3 +1,5 @@ +//@dart=2.12 + abstract class AppEmojis { static const List emojis = [ '👍', diff --git a/lib/config/routes.dart b/lib/config/routes.dart index c191f563..bbc06a5b 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -1,3 +1,5 @@ +//@dart=2.12 + import 'package:flutter/material.dart'; import 'package:vrouter/vrouter.dart'; @@ -341,7 +343,7 @@ class AppRoutes { ), ]; - FadeTransition Function(dynamic, dynamic, dynamic) get _dynamicTransition => + FadeTransition Function(dynamic, dynamic, dynamic)? get _dynamicTransition => columnMode ? _fadeTransition : null; FadeTransition _fadeTransition(animation1, _, child) => diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index eb036955..4574e96b 100644 --- a/lib/config/setting_keys.dart +++ b/lib/config/setting_keys.dart @@ -1,3 +1,5 @@ +//@dart=2.12 + abstract class SettingKeys { static const String jitsiInstance = 'chat.fluffy.jitsi_instance'; static const String wallpaper = 'chat.fluffy.wallpaper'; diff --git a/lib/config/themes.dart b/lib/config/themes.dart index 85f5360d..06e50b99 100644 --- a/lib/config/themes.dart +++ b/lib/config/themes.dart @@ -1,3 +1,5 @@ +//@dart=2.12 + import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; diff --git a/lib/main.dart b/lib/main.dart index 7bf5881d..7f9e49c4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,4 @@ -// @dart=2.9 +// @dart=2.12 import 'dart:async'; @@ -33,8 +33,11 @@ void main() async { // To make sure that the parts of flutter needed are started up already, we need to ensure that the // widget bindings are initialized already. WidgetsFlutterBinding.ensureInitialized(); - FlutterError.onError = (FlutterErrorDetails details) => - Zone.current.handleUncaughtError(details.exception, details.stack); + FlutterError.onError = + (FlutterErrorDetails details) => Zone.current.handleUncaughtError( + details.exception, + details.stack ?? StackTrace.current, + ); final clients = await ClientManager.getClients(); Logs().level = kReleaseMode ? Level.warning : Level.verbose; @@ -65,13 +68,16 @@ void main() async { } class FluffyChatApp extends StatefulWidget { - final Widget testWidget; + final Widget? testWidget; final List clients; - final Map queryParameters; + final Map? queryParameters; - const FluffyChatApp( - {Key key, this.testWidget, @required this.clients, this.queryParameters}) - : super(key: key); + const FluffyChatApp({ + Key? key, + this.testWidget, + required this.clients, + this.queryParameters, + }) : super(key: key); /// getInitialLink may rereturn the value multiple times if this view is /// opened multiple times for example if the user logs out after they logged @@ -83,9 +89,9 @@ class FluffyChatApp extends StatefulWidget { } class _FluffyChatAppState extends State { - GlobalKey _router; - bool columnMode; - String _initialUrl; + GlobalKey? _router; + bool? columnMode; + String? _initialUrl; @override void initState() { @@ -110,9 +116,9 @@ class _FluffyChatAppState extends State { _router ??= GlobalKey(); if (columnMode != newColumns > 1) { Logs().v('Set Column Mode = $columnMode'); - WidgetsBinding.instance.addPostFrameCallback((_) { + WidgetsBinding.instance?.addPostFrameCallback((_) { setState(() { - _initialUrl = _router.currentState.url; + _initialUrl = _router?.currentState?.url; columnMode = newColumns > 1; _router = GlobalKey(); }); @@ -127,17 +133,17 @@ class _FluffyChatAppState extends State { darkTheme: darkTheme, localizationsDelegates: L10n.localizationsDelegates, supportedLocales: L10n.supportedLocales, - initialUrl: _initialUrl, + initialUrl: _initialUrl ?? '/', locale: kIsWeb ? Locale(html.window.navigator.language.split('-').first) : null, - routes: AppRoutes(columnMode).routes, + routes: AppRoutes(columnMode ?? false).routes, builder: (context, child) { - LoadingDialog.defaultTitle = L10n.of(context).loadingPleaseWait; - LoadingDialog.defaultBackLabel = L10n.of(context).close; + LoadingDialog.defaultTitle = L10n.of(context)!.loadingPleaseWait; + LoadingDialog.defaultBackLabel = L10n.of(context)!.close; LoadingDialog.defaultOnError = - (Object e) => e.toLocalizedString(context); - WidgetsBinding.instance.addPostFrameCallback((_) { + (e) => (e as Object).toLocalizedString(context); + WidgetsBinding.instance?.addPostFrameCallback((_) { SystemChrome.setSystemUIOverlayStyle( SystemUiOverlayStyle( statusBarColor: Colors.transparent,