diff --git a/app/lib/data/database/functions/lexo_rank_functions.dart b/app/lib/data/database/functions/lexo_rank_functions.dart index da668e9c..aecd7522 100644 --- a/app/lib/data/database/functions/lexo_rank_functions.dart +++ b/app/lib/data/database/functions/lexo_rank_functions.dart @@ -1,6 +1,6 @@ -import 'package:lensai/extensions/nullable.dart'; import 'package:lexo_rank/lexo_rank.dart'; import 'package:lexo_rank/lexo_rank/lexo_rank_bucket.dart'; +import 'package:nullability/nullability.dart'; import 'package:sqlite3/common.dart'; String _nextRankOrMiddle(List args) { diff --git a/app/lib/data/models/web_page_info.dart b/app/lib/data/models/web_page_info.dart index 5a503bd0..f160a9e9 100644 --- a/app/lib/data/models/web_page_info.dart +++ b/app/lib/data/models/web_page_info.dart @@ -1,7 +1,7 @@ import 'package:copy_with_extension/copy_with_extension.dart'; import 'package:fast_equatable/fast_equatable.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/entities/browser_icon.dart'; +import 'package:nullability/nullability.dart'; part 'web_page_info.g.dart'; diff --git a/app/lib/domain/services/generic_website.dart b/app/lib/domain/services/generic_website.dart index ab12055e..2e8c2892 100644 --- a/app/lib/domain/services/generic_website.dart +++ b/app/lib/domain/services/generic_website.dart @@ -4,18 +4,17 @@ import 'dart:ui'; import 'package:exceptions/exceptions.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; - import 'package:html/dom.dart'; import 'package:html/parser.dart' as html_parser; import 'package:http/http.dart' as http; import 'package:lensai/core/http_error_handler.dart'; import 'package:lensai/data/models/web_page_info.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/entities/browser_icon.dart'; import 'package:lensai/features/user/domain/repositories/cache.dart'; import 'package:lensai/features/web_feed/utils/feed_finder.dart'; import 'package:lensai/presentation/controllers/website_title.dart'; import 'package:lensai/utils/lru_cache.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'generic_website.g.dart'; diff --git a/app/lib/extensions/nullable.dart b/app/lib/extensions/nullable.dart deleted file mode 100644 index 7048c1f6..00000000 --- a/app/lib/extensions/nullable.dart +++ /dev/null @@ -1,30 +0,0 @@ -extension NullableX on T? { - @pragma('vm:prefer-inline') - R? mapNotNull(R? Function(T) callback) { - // Already optimized, but can simplify further - return this == null ? null : callback(this as T); - } -} - -extension NullableStringX on String? { - @pragma('vm:prefer-inline') - String? get whenNotEmpty { - // Avoid double null check - final value = this; - return value != null && value.isNotEmpty ? value : null; - } - - @pragma('vm:prefer-inline') - bool get isNotEmpty => this != null && this!.isNotEmpty; - - @pragma('vm:prefer-inline') - bool get isEmpty => this == null || this!.isEmpty; -} - -extension NullableIterable on Iterable? { - @pragma('vm:prefer-inline') - bool get isNotEmpty => this != null && this!.isNotEmpty; - - @pragma('vm:prefer-inline') - bool get isEmpty => this == null || this!.isEmpty; -} diff --git a/app/lib/features/bangs/data/database/daos/bang.dart b/app/lib/features/bangs/data/database/daos/bang.dart index b444e6f8..1bf73640 100644 --- a/app/lib/features/bangs/data/database/daos/bang.dart +++ b/app/lib/features/bangs/data/database/daos/bang.dart @@ -1,9 +1,9 @@ import 'package:drift/drift.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/bangs/data/database/database.dart'; import 'package:lensai/features/bangs/data/models/bang.dart'; import 'package:lensai/features/bangs/data/models/bang_data.dart'; import 'package:lensai/features/bangs/data/models/bang_group.dart'; +import 'package:nullability/nullability.dart'; part 'bang.g.dart'; diff --git a/app/lib/features/bangs/presentation/screens/list.dart b/app/lib/features/bangs/presentation/screens/list.dart index 305e2a87..c789cade 100644 --- a/app/lib/features/bangs/presentation/screens/list.dart +++ b/app/lib/features/bangs/presentation/screens/list.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/routing/routes.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/bangs/domain/providers/bangs.dart'; import 'package:lensai/features/bangs/presentation/widgets/bang_details.dart'; import 'package:lensai/features/geckoview/features/browser/domain/providers.dart'; import 'package:lensai/presentation/widgets/failure_widget.dart'; +import 'package:nullability/nullability.dart'; class BangListScreen extends HookConsumerWidget { final String? category; diff --git a/app/lib/features/chat/features/chat_store/domain/repositories/chat_message.dart b/app/lib/features/chat/features/chat_store/domain/repositories/chat_message.dart index ca4ad937..0e9f56eb 100644 --- a/app/lib/features/chat/features/chat_store/domain/repositories/chat_message.dart +++ b/app/lib/features/chat/features/chat_store/domain/repositories/chat_message.dart @@ -2,10 +2,10 @@ import 'package:exceptions/exceptions.dart'; import 'package:flutter_chat_core/flutter_chat_core.dart'; import 'package:langchain/langchain.dart'; import 'package:lensai/core/uuid.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/chat/features/chat_store/data/models/message_types.dart'; import 'package:lensai/features/chat/features/chat_store/domain/controllers/drift_chat_controller.dart'; import 'package:lensai/features/chat/features/chat_store/domain/providers.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'chat_message.g.dart'; diff --git a/app/lib/features/geckoview/domain/entities/states/tab.dart b/app/lib/features/geckoview/domain/entities/states/tab.dart index 26c76ef7..1e06e1d9 100644 --- a/app/lib/features/geckoview/domain/entities/states/tab.dart +++ b/app/lib/features/geckoview/domain/entities/states/tab.dart @@ -2,12 +2,12 @@ import 'package:copy_with_extension/copy_with_extension.dart'; import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; import 'package:lensai/data/models/web_page_info.dart'; import 'package:lensai/domain/entities/equatable_image.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/entities/browser_icon.dart'; import 'package:lensai/features/geckoview/domain/entities/states/find_result.dart'; import 'package:lensai/features/geckoview/domain/entities/states/history.dart'; import 'package:lensai/features/geckoview/domain/entities/states/readerable.dart'; import 'package:lensai/features/geckoview/domain/entities/states/security.dart'; +import 'package:nullability/nullability.dart'; part 'tab.g.dart'; diff --git a/app/lib/features/geckoview/domain/providers/tab_state.dart b/app/lib/features/geckoview/domain/providers/tab_state.dart index ac30ac75..5e556ce3 100644 --- a/app/lib/features/geckoview/domain/providers/tab_state.dart +++ b/app/lib/features/geckoview/domain/providers/tab_state.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/entities/states/find_result.dart'; import 'package:lensai/features/geckoview/domain/entities/states/history.dart'; import 'package:lensai/features/geckoview/domain/entities/states/readerable.dart'; @@ -11,6 +10,7 @@ import 'package:lensai/features/geckoview/domain/providers.dart'; import 'package:lensai/features/geckoview/domain/providers/selected_tab.dart'; import 'package:lensai/features/geckoview/features/find_in_page/domain/repositories/find_in_page.dart'; import 'package:lensai/features/geckoview/utils/image_helper.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:rxdart/rxdart.dart'; diff --git a/app/lib/features/geckoview/domain/providers/web_extensions_state.dart b/app/lib/features/geckoview/domain/providers/web_extensions_state.dart index 927ff318..04caeb0a 100644 --- a/app/lib/features/geckoview/domain/providers/web_extensions_state.dart +++ b/app/lib/features/geckoview/domain/providers/web_extensions_state.dart @@ -3,10 +3,10 @@ import 'dart:ui'; import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; import 'package:lensai/domain/entities/equatable_image.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/entities/states/web_extension.dart'; import 'package:lensai/features/geckoview/domain/providers.dart'; import 'package:lensai/features/geckoview/utils/image_helper.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'web_extensions_state.g.dart'; diff --git a/app/lib/features/geckoview/domain/repositories/tab.dart b/app/lib/features/geckoview/domain/repositories/tab.dart index 1025d4d9..da33fd09 100644 --- a/app/lib/features/geckoview/domain/repositories/tab.dart +++ b/app/lib/features/geckoview/domain/repositories/tab.dart @@ -4,7 +4,6 @@ import 'package:collection/collection.dart'; import 'package:drift/drift.dart'; import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; import 'package:lensai/core/logger.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/bangs/domain/providers/bangs.dart'; import 'package:lensai/features/geckoview/domain/entities/states/tab.dart'; import 'package:lensai/features/geckoview/domain/providers.dart'; @@ -19,6 +18,7 @@ import 'package:lensai/features/geckoview/features/tabs/domain/repositories/cont import 'package:lensai/features/geckoview/features/tabs/domain/repositories/tab.dart'; import 'package:lensai/features/share_intent/domain/entities/shared_content.dart'; import 'package:lensai/utils/debouncer.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'tab.g.dart'; diff --git a/app/lib/features/geckoview/features/browser/domain/providers/intent.dart b/app/lib/features/geckoview/features/browser/domain/providers/intent.dart index d655cac9..8006d521 100644 --- a/app/lib/features/geckoview/features/browser/domain/providers/intent.dart +++ b/app/lib/features/geckoview/features/browser/domain/providers/intent.dart @@ -1,11 +1,11 @@ import 'dart:async'; import 'package:lensai/data/models/received_intent_parameter.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/app_widget/domain/services/home_widget.dart'; import 'package:lensai/features/geckoview/domain/providers.dart'; import 'package:lensai/features/share_intent/domain/entities/shared_content.dart'; import 'package:lensai/features/share_intent/domain/services/sharing_intent.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:rxdart/rxdart.dart'; diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/browser_modules/browser_view.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/browser_modules/browser_view.dart index 129f3d82..36390097 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/browser_modules/browser_view.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/browser_modules/browser_view.dart @@ -7,7 +7,6 @@ import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/logger.dart'; import 'package:lensai/core/routing/routes.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/providers.dart'; import 'package:lensai/features/geckoview/domain/providers/browser_extension.dart'; import 'package:lensai/features/geckoview/domain/providers/selected_tab.dart'; @@ -27,6 +26,7 @@ import 'package:lensai/features/web_feed/domain/providers/add_dialog_blocking.da import 'package:lensai/features/web_feed/domain/services/article_content_processor.dart'; import 'package:lensai/presentation/hooks/on_initialization.dart'; import 'package:lensai/utils/ui_helper.dart'; +import 'package:nullability/nullability.dart'; class BrowserView extends StatefulHookConsumerWidget { final Duration screenshotPeriod; diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/extension_badge_icon.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/extension_badge_icon.dart index 935174bc..275b7a79 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/extension_badge_icon.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/extension_badge_icon.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/entities/states/web_extension.dart'; +import 'package:nullability/nullability.dart'; class ExtensionBadgeIcon extends StatelessWidget { final WebExtensionState state; diff --git a/app/lib/features/geckoview/features/contextmenu/extensions/hit_result.dart b/app/lib/features/geckoview/features/contextmenu/extensions/hit_result.dart index 2e14aa55..a4e7b35c 100644 --- a/app/lib/features/geckoview/features/contextmenu/extensions/hit_result.dart +++ b/app/lib/features/geckoview/features/contextmenu/extensions/hit_result.dart @@ -1,8 +1,8 @@ import 'dart:convert'; import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/features/contextmenu/domain/converters/hit_result_converter.dart'; +import 'package:nullability/nullability.dart'; extension HitResultJson on HitResult { String toJson() { diff --git a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_email.dart b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_email.dart index f0af8f97..32bd8397 100644 --- a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_email.dart +++ b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_email.dart @@ -4,8 +4,8 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/features/contextmenu/extensions/hit_result.dart'; +import 'package:nullability/nullability.dart'; class CopyEmail extends HookConsumerWidget { final HitResult hitResult; diff --git a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_image_location.dart b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_image_location.dart index 38da55a8..3e73eeec 100644 --- a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_image_location.dart +++ b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_image_location.dart @@ -4,8 +4,8 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/features/contextmenu/extensions/hit_result.dart'; +import 'package:nullability/nullability.dart'; class CopyImageLocation extends HookConsumerWidget { final HitResult hitResult; diff --git a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_link.dart b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_link.dart index 45dae781..d2e1711e 100644 --- a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_link.dart +++ b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/copy_link.dart @@ -4,8 +4,8 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/features/contextmenu/extensions/hit_result.dart'; +import 'package:nullability/nullability.dart'; class CopyLink extends HookConsumerWidget { final HitResult hitResult; diff --git a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/launch_external.dart b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/launch_external.dart index 46d08ad9..c5c05714 100644 --- a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/launch_external.dart +++ b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/launch_external.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/features/contextmenu/extensions/hit_result.dart'; import 'package:lensai/utils/ui_helper.dart'; +import 'package:nullability/nullability.dart'; import 'package:url_launcher/url_launcher.dart'; class LaunchExternal extends HookConsumerWidget { diff --git a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/share_email.dart b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/share_email.dart index ca672721..0652d69f 100644 --- a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/share_email.dart +++ b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/share_email.dart @@ -3,8 +3,8 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/features/contextmenu/extensions/hit_result.dart'; +import 'package:nullability/nullability.dart'; import 'package:share_plus/share_plus.dart'; class ShareEmail extends HookConsumerWidget { diff --git a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/share_link.dart b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/share_link.dart index c2b480a3..acac4ac0 100644 --- a/app/lib/features/geckoview/features/contextmenu/presentation/candidates/share_link.dart +++ b/app/lib/features/geckoview/features/contextmenu/presentation/candidates/share_link.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/features/contextmenu/extensions/hit_result.dart'; +import 'package:nullability/nullability.dart'; import 'package:share_plus/share_plus.dart'; class ShareLink extends HookConsumerWidget { diff --git a/app/lib/features/geckoview/features/find_in_page/presentation/controllers/find_in_page.dart b/app/lib/features/geckoview/features/find_in_page/presentation/controllers/find_in_page.dart index 9eb22fb4..0e5b9e73 100644 --- a/app/lib/features/geckoview/features/find_in_page/presentation/controllers/find_in_page.dart +++ b/app/lib/features/geckoview/features/find_in_page/presentation/controllers/find_in_page.dart @@ -1,8 +1,8 @@ -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/providers/selected_tab.dart'; import 'package:lensai/features/geckoview/domain/providers/tab_state.dart'; import 'package:lensai/features/geckoview/features/find_in_page/domain/entities/find_in_page_state.dart'; import 'package:lensai/features/geckoview/features/find_in_page/domain/repositories/find_in_page.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'find_in_page.g.dart'; diff --git a/app/lib/features/geckoview/features/search/domain/providers/engine_suggestions.dart b/app/lib/features/geckoview/features/search/domain/providers/engine_suggestions.dart index 8a38547c..e829608c 100644 --- a/app/lib/features/geckoview/features/search/domain/providers/engine_suggestions.dart +++ b/app/lib/features/geckoview/features/search/domain/providers/engine_suggestions.dart @@ -1,6 +1,6 @@ import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/providers.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:rxdart/rxdart.dart'; diff --git a/app/lib/features/geckoview/features/search/presentation/widgets/bang_chips.dart b/app/lib/features/geckoview/features/search/presentation/widgets/bang_chips.dart index 39a8a4f5..a8a9d906 100644 --- a/app/lib/features/geckoview/features/search/presentation/widgets/bang_chips.dart +++ b/app/lib/features/geckoview/features/search/presentation/widgets/bang_chips.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/routing/routes.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/bangs/data/models/bang_data.dart'; import 'package:lensai/features/bangs/domain/providers/search.dart'; import 'package:lensai/features/geckoview/features/browser/domain/providers.dart'; import 'package:lensai/presentation/hooks/listenable_callback.dart'; import 'package:lensai/presentation/widgets/selectable_chips.dart'; import 'package:lensai/presentation/widgets/url_icon.dart'; +import 'package:nullability/nullability.dart'; class BangChips extends HookConsumerWidget { final bool displayMenu; diff --git a/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/feed_search.dart b/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/feed_search.dart index bd0e773a..e46a0058 100644 --- a/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/feed_search.dart +++ b/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/feed_search.dart @@ -4,7 +4,6 @@ import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/providers/format.dart'; import 'package:lensai/core/routing/routes.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/extensions/uri.dart'; import 'package:lensai/features/web_feed/data/models/feed_article_query_result.dart'; import 'package:lensai/features/web_feed/data/models/feed_link.dart'; @@ -14,6 +13,7 @@ import 'package:lensai/features/web_feed/extensions/feed_article.dart'; import 'package:lensai/presentation/hooks/listenable_callback.dart'; import 'package:lensai/presentation/widgets/failure_widget.dart'; import 'package:lensai/presentation/widgets/url_icon.dart'; +import 'package:nullability/nullability.dart'; import 'package:skeletonizer/skeletonizer.dart'; import 'package:sliver_tools/sliver_tools.dart'; diff --git a/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/history_suggestions.dart b/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/history_suggestions.dart index d8ae1000..a8edfaa8 100644 --- a/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/history_suggestions.dart +++ b/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/history_suggestions.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/controllers/bottom_sheet.dart'; import 'package:lensai/features/geckoview/domain/repositories/tab.dart'; import 'package:lensai/features/geckoview/features/search/domain/providers/engine_suggestions.dart'; @@ -11,6 +10,7 @@ import 'package:lensai/features/geckoview/utils/image_helper.dart'; import 'package:lensai/presentation/hooks/cached_future.dart'; import 'package:lensai/presentation/hooks/listenable_callback.dart'; import 'package:lensai/presentation/widgets/failure_widget.dart'; +import 'package:nullability/nullability.dart'; import 'package:skeletonizer/skeletonizer.dart'; import 'package:sliver_tools/sliver_tools.dart'; diff --git a/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/search_suggestions.dart b/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/search_suggestions.dart index e7774ae6..3b9520e5 100644 --- a/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/search_suggestions.dart +++ b/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/search_suggestions.dart @@ -3,7 +3,6 @@ import 'package:fading_scroll/fading_scroll.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/bangs/data/models/bang_data.dart'; import 'package:lensai/features/bangs/domain/providers/bangs.dart'; import 'package:lensai/features/bangs/domain/repositories/data.dart'; @@ -11,6 +10,7 @@ import 'package:lensai/features/geckoview/features/browser/domain/providers.dart import 'package:lensai/features/geckoview/features/search/domain/providers/search_suggestions.dart'; import 'package:lensai/features/geckoview/features/search/presentation/widgets/bang_chips.dart'; import 'package:lensai/presentation/hooks/listenable_callback.dart'; +import 'package:nullability/nullability.dart'; import 'package:sliver_tools/sliver_tools.dart'; class SearchTermSuggestions extends HookConsumerWidget { diff --git a/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/tab_search.dart b/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/tab_search.dart index 95720a83..a0cf1584 100644 --- a/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/tab_search.dart +++ b/app/lib/features/geckoview/features/search/presentation/widgets/search_modules/tab_search.dart @@ -4,7 +4,6 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/controllers/bottom_sheet.dart'; import 'package:lensai/features/geckoview/domain/repositories/tab.dart'; import 'package:lensai/features/geckoview/features/browser/domain/providers.dart'; @@ -15,6 +14,7 @@ import 'package:lensai/features/geckoview/features/tabs/domain/repositories/tab_ import 'package:lensai/features/geckoview/features/tabs/presentation/widgets/container_chips.dart'; import 'package:lensai/presentation/hooks/listenable_callback.dart'; import 'package:lensai/presentation/widgets/url_icon.dart'; +import 'package:nullability/nullability.dart'; import 'package:sliver_tools/sliver_tools.dart'; class TabSearch extends HookConsumerWidget { diff --git a/app/lib/features/geckoview/features/tabs/domain/providers.dart b/app/lib/features/geckoview/features/tabs/domain/providers.dart index 98704434..f48c8780 100644 --- a/app/lib/features/geckoview/features/tabs/domain/providers.dart +++ b/app/lib/features/geckoview/features/tabs/domain/providers.dart @@ -1,8 +1,8 @@ -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/features/tabs/data/entities/container_filter.dart'; import 'package:lensai/features/geckoview/features/tabs/data/models/container_data.dart'; import 'package:lensai/features/geckoview/features/tabs/data/providers.dart'; import 'package:lensai/features/search/util/tokenized_filter.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/app/lib/features/geckoview/features/tabs/features/vector_store/domain/repositories/document.dart b/app/lib/features/geckoview/features/tabs/features/vector_store/domain/repositories/document.dart index b2ae74c9..7d445473 100644 --- a/app/lib/features/geckoview/features/tabs/features/vector_store/domain/repositories/document.dart +++ b/app/lib/features/geckoview/features/tabs/features/vector_store/domain/repositories/document.dart @@ -6,11 +6,11 @@ import 'package:langchain/langchain.dart' as langchain; import 'package:langchain/langchain.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:lensai/core/providers/models.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/providers.dart'; import 'package:lensai/features/geckoview/features/tabs/data/providers.dart'; import 'package:lensai/features/geckoview/features/tabs/features/vector_store/data/database/daos/vector.dart'; import 'package:lensai/features/geckoview/features/tabs/features/vector_store/utils/markdown_document_splitter.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'document.g.dart'; diff --git a/app/lib/features/geckoview/features/tabs/presentation/widgets/container_chips.dart b/app/lib/features/geckoview/features/tabs/presentation/widgets/container_chips.dart index de2f3f0f..410c3354 100644 --- a/app/lib/features/geckoview/features/tabs/presentation/widgets/container_chips.dart +++ b/app/lib/features/geckoview/features/tabs/presentation/widgets/container_chips.dart @@ -5,13 +5,13 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/providers/global_drop.dart'; import 'package:lensai/core/routing/routes.dart'; import 'package:lensai/data/models/drag_data.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/repositories/tab.dart'; import 'package:lensai/features/geckoview/features/tabs/data/models/container_data.dart'; import 'package:lensai/features/geckoview/features/tabs/domain/providers.dart'; import 'package:lensai/features/geckoview/features/tabs/domain/repositories/container.dart'; import 'package:lensai/features/geckoview/features/tabs/domain/repositories/tab.dart'; import 'package:lensai/presentation/widgets/selectable_chips.dart'; +import 'package:nullability/nullability.dart'; class ContainerChips extends HookConsumerWidget { final bool displayMenu; diff --git a/app/lib/features/settings/presentation/screens/web_engine_hardening.dart b/app/lib/features/settings/presentation/screens/web_engine_hardening.dart index 73faaa12..6e7489bd 100644 --- a/app/lib/features/settings/presentation/screens/web_engine_hardening.dart +++ b/app/lib/features/settings/presentation/screens/web_engine_hardening.dart @@ -3,11 +3,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/routing/routes.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/features/preferences/data/repositories/preference_settings.dart'; import 'package:lensai/features/geckoview/features/tabs/utils/setting_groups_serializer.dart'; import 'package:lensai/features/settings/presentation/widgets/hardening_group_icon.dart'; import 'package:lensai/presentation/widgets/failure_widget.dart'; +import 'package:nullability/nullability.dart'; class WebEngineHardeningScreen extends HookConsumerWidget { const WebEngineHardeningScreen(); diff --git a/app/lib/features/settings/presentation/screens/web_engine_hardening_group.dart b/app/lib/features/settings/presentation/screens/web_engine_hardening_group.dart index a0fb34d0..fc711b90 100644 --- a/app/lib/features/settings/presentation/screens/web_engine_hardening_group.dart +++ b/app/lib/features/settings/presentation/screens/web_engine_hardening_group.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/features/preferences/data/repositories/preference_settings.dart'; import 'package:lensai/features/geckoview/features/tabs/utils/setting_groups_serializer.dart'; import 'package:lensai/features/settings/presentation/widgets/hardening_group_icon.dart'; import 'package:lensai/presentation/widgets/failure_widget.dart'; +import 'package:nullability/nullability.dart'; class WebEngineHardeningGroupScreen extends HookConsumerWidget { final String groupName; diff --git a/app/lib/features/settings/presentation/screens/web_engine_settings.dart b/app/lib/features/settings/presentation/screens/web_engine_settings.dart index 590dcb00..d787f2fc 100644 --- a/app/lib/features/settings/presentation/screens/web_engine_settings.dart +++ b/app/lib/features/settings/presentation/screens/web_engine_settings.dart @@ -6,12 +6,12 @@ import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/routing/routes.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/settings/presentation/controllers/save_settings.dart'; import 'package:lensai/features/user/data/models/engine_settings.dart'; import 'package:lensai/features/user/data/models/general_settings.dart'; import 'package:lensai/features/user/domain/repositories/engine_settings.dart'; import 'package:lensai/features/user/domain/repositories/general_settings.dart'; +import 'package:nullability/nullability.dart'; import 'package:universal_io/io.dart'; class WebEngineSettingsScreen extends HookConsumerWidget { diff --git a/app/lib/features/user/data/database/daos/setting.dart b/app/lib/features/user/data/database/daos/setting.dart index 19b0dd9c..deb556cb 100644 --- a/app/lib/features/user/data/database/daos/setting.dart +++ b/app/lib/features/user/data/database/daos/setting.dart @@ -1,8 +1,8 @@ import 'dart:convert'; import 'package:drift/drift.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/user/data/database/database.dart'; +import 'package:nullability/nullability.dart'; part 'setting.g.dart'; diff --git a/app/lib/features/user/domain/repositories/general_settings.dart b/app/lib/features/user/domain/repositories/general_settings.dart index 9319911c..aa7af105 100644 --- a/app/lib/features/user/domain/repositories/general_settings.dart +++ b/app/lib/features/user/domain/repositories/general_settings.dart @@ -2,9 +2,9 @@ import 'dart:async'; import 'dart:convert'; import 'package:drift/drift.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/user/data/models/general_settings.dart'; import 'package:lensai/features/user/data/providers.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'general_settings.g.dart'; diff --git a/app/lib/features/user/presentation/screens/auth.dart b/app/lib/features/user/presentation/screens/auth.dart index bedf642f..3e44b052 100644 --- a/app/lib/features/user/presentation/screens/auth.dart +++ b/app/lib/features/user/presentation/screens/auth.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/user/domain/providers.dart'; import 'package:lensai/features/user/presentation/controllers/controllers.dart'; +import 'package:nullability/nullability.dart'; enum _AuthType { login, signup } diff --git a/app/lib/features/web_feed/domain/providers.dart b/app/lib/features/web_feed/domain/providers.dart index 21ea960b..ef14c4a8 100644 --- a/app/lib/features/web_feed/domain/providers.dart +++ b/app/lib/features/web_feed/domain/providers.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/web_feed/data/database/database.dart'; import 'package:lensai/features/web_feed/data/models/feed_article.dart'; import 'package:lensai/features/web_feed/data/models/feed_parse_result.dart'; @@ -8,6 +7,7 @@ import 'package:lensai/features/web_feed/data/providers.dart'; import 'package:lensai/features/web_feed/domain/providers/article_filter.dart'; import 'package:lensai/features/web_feed/domain/repositories/feed_repository.dart'; import 'package:lensai/features/web_feed/domain/services/feed_reader.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:rxdart/rxdart.dart'; diff --git a/app/lib/features/web_feed/domain/providers/add_dialog_blocking.dart b/app/lib/features/web_feed/domain/providers/add_dialog_blocking.dart index 50d93a83..4b3e2e0b 100644 --- a/app/lib/features/web_feed/domain/providers/add_dialog_blocking.dart +++ b/app/lib/features/web_feed/domain/providers/add_dialog_blocking.dart @@ -1,5 +1,5 @@ import 'package:lensai/core/logger.dart'; -import 'package:lensai/extensions/nullable.dart'; +import 'package:nullability/nullability.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'add_dialog_blocking.g.dart'; diff --git a/app/lib/features/web_feed/extensions/atom.dart b/app/lib/features/web_feed/extensions/atom.dart index 2e0ee441..3089bf62 100644 --- a/app/lib/features/web_feed/extensions/atom.dart +++ b/app/lib/features/web_feed/extensions/atom.dart @@ -1,8 +1,8 @@ import 'package:collection/collection.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/web_feed/data/models/feed_author.dart'; import 'package:lensai/features/web_feed/data/models/feed_category.dart'; import 'package:lensai/features/web_feed/data/models/feed_link.dart'; +import 'package:nullability/nullability.dart'; import 'package:rss_dart/dart_rss.dart'; extension ParseAtomLink on List { diff --git a/app/lib/features/web_feed/extensions/feed_article.dart b/app/lib/features/web_feed/extensions/feed_article.dart index 8fbfe9ef..66ec3716 100644 --- a/app/lib/features/web_feed/extensions/feed_article.dart +++ b/app/lib/features/web_feed/extensions/feed_article.dart @@ -1,7 +1,7 @@ -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/web_feed/data/models/feed_article.dart'; import 'package:lensai/features/web_feed/data/models/feed_link.dart'; import 'package:lensai/features/web_feed/extensions/atom.dart'; +import 'package:nullability/nullability.dart'; extension FeedArticleX on FeedArticle { String get displayTitle => diff --git a/app/lib/features/web_feed/extensions/rss.dart b/app/lib/features/web_feed/extensions/rss.dart index 9168ad49..6262a47a 100644 --- a/app/lib/features/web_feed/extensions/rss.dart +++ b/app/lib/features/web_feed/extensions/rss.dart @@ -1,5 +1,5 @@ -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/web_feed/data/models/feed_category.dart'; +import 'package:nullability/nullability.dart'; import 'package:rss_dart/dart_rss.dart'; import 'package:rss_dart/domain/dublin_core/dublin_core.dart'; diff --git a/app/lib/features/web_feed/presentation/screens/feed_article.dart b/app/lib/features/web_feed/presentation/screens/feed_article.dart index d84e813a..a319fe32 100644 --- a/app/lib/features/web_feed/presentation/screens/feed_article.dart +++ b/app/lib/features/web_feed/presentation/screens/feed_article.dart @@ -5,7 +5,6 @@ import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/providers/format.dart'; import 'package:lensai/core/routing/routes.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/geckoview/domain/repositories/tab.dart'; import 'package:lensai/features/web_feed/data/models/feed_link.dart'; import 'package:lensai/features/web_feed/domain/providers.dart'; @@ -16,6 +15,7 @@ import 'package:lensai/features/web_feed/presentation/widgets/tags_horizontal_li import 'package:lensai/presentation/widgets/failure_widget.dart'; import 'package:lensai/utils/markdown/image_extractor.dart'; import 'package:lensai/utils/ui_helper.dart'; +import 'package:nullability/nullability.dart'; enum _Pages { summary, content } diff --git a/app/lib/features/web_feed/presentation/screens/feed_article_list.dart b/app/lib/features/web_feed/presentation/screens/feed_article_list.dart index 6cc3faef..cfb854b0 100644 --- a/app/lib/features/web_feed/presentation/screens/feed_article_list.dart +++ b/app/lib/features/web_feed/presentation/screens/feed_article_list.dart @@ -2,7 +2,6 @@ import 'package:fading_scroll/fading_scroll.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/web_feed/domain/providers.dart'; import 'package:lensai/features/web_feed/domain/providers/article_filter.dart'; import 'package:lensai/features/web_feed/presentation/controllers/fetch_articles.dart'; @@ -10,6 +9,7 @@ import 'package:lensai/features/web_feed/presentation/widgets/feed_article_card. import 'package:lensai/presentation/hooks/listenable_callback.dart'; import 'package:lensai/presentation/widgets/failure_widget.dart'; import 'package:lensai/presentation/widgets/speech_to_text_button.dart'; +import 'package:nullability/nullability.dart'; class FeedArticleListScreen extends HookConsumerWidget { final Uri? feedId; diff --git a/app/lib/features/web_feed/presentation/screens/feed_edit.dart b/app/lib/features/web_feed/presentation/screens/feed_edit.dart index 72513564..a6fc4621 100644 --- a/app/lib/features/web_feed/presentation/screens/feed_edit.dart +++ b/app/lib/features/web_feed/presentation/screens/feed_edit.dart @@ -4,7 +4,6 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/extensions/uri.dart'; import 'package:lensai/features/web_feed/data/database/database.dart'; import 'package:lensai/features/web_feed/data/models/feed_category.dart'; @@ -15,6 +14,7 @@ import 'package:lensai/presentation/widgets/failure_widget.dart'; import 'package:lensai/presentation/widgets/url_icon.dart'; import 'package:lensai/utils/form_validators.dart'; import 'package:lensai/utils/uri_parser.dart' as uri_parser; +import 'package:nullability/nullability.dart'; enum _DialogMode { create, edit } diff --git a/app/lib/features/web_feed/presentation/select_feed_dialog.dart b/app/lib/features/web_feed/presentation/select_feed_dialog.dart index 29735e8f..6f3f869a 100644 --- a/app/lib/features/web_feed/presentation/select_feed_dialog.dart +++ b/app/lib/features/web_feed/presentation/select_feed_dialog.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/routing/routes.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/web_feed/domain/providers.dart'; import 'package:lensai/presentation/widgets/failure_widget.dart'; +import 'package:nullability/nullability.dart'; import 'package:skeletonizer/skeletonizer.dart'; class SelectFeedDialog extends HookConsumerWidget { diff --git a/app/lib/features/web_feed/presentation/widgets/authors_horizontal_list.dart b/app/lib/features/web_feed/presentation/widgets/authors_horizontal_list.dart index e628b0c1..f18a378c 100644 --- a/app/lib/features/web_feed/presentation/widgets/authors_horizontal_list.dart +++ b/app/lib/features/web_feed/presentation/widgets/authors_horizontal_list.dart @@ -1,7 +1,7 @@ import 'package:fading_scroll/fading_scroll.dart'; import 'package:flutter/material.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/web_feed/data/models/feed_author.dart'; +import 'package:nullability/nullability.dart'; class AuthorsHorizontalList extends StatelessWidget { late final List _authors; diff --git a/app/lib/features/web_feed/presentation/widgets/feed_article_card.dart b/app/lib/features/web_feed/presentation/widgets/feed_article_card.dart index 2b715b11..51d4b639 100644 --- a/app/lib/features/web_feed/presentation/widgets/feed_article_card.dart +++ b/app/lib/features/web_feed/presentation/widgets/feed_article_card.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/routing/routes.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/extensions/uri.dart'; import 'package:lensai/features/web_feed/data/models/feed_article.dart'; import 'package:lensai/features/web_feed/data/models/feed_article_query_result.dart'; @@ -14,6 +13,7 @@ import 'package:lensai/features/web_feed/extensions/feed_article.dart'; import 'package:lensai/features/web_feed/presentation/widgets/authors_horizontal_list.dart'; import 'package:lensai/features/web_feed/presentation/widgets/tags_horizontal_list.dart'; import 'package:lensai/presentation/widgets/url_icon.dart'; +import 'package:nullability/nullability.dart'; import 'package:timeago/timeago.dart' as timeago; class FeedArticleCard extends HookConsumerWidget { diff --git a/app/lib/features/web_feed/presentation/widgets/feed_card.dart b/app/lib/features/web_feed/presentation/widgets/feed_card.dart index 4e1d5daa..cf7b0782 100644 --- a/app/lib/features/web_feed/presentation/widgets/feed_card.dart +++ b/app/lib/features/web_feed/presentation/widgets/feed_card.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/routing/routes.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/extensions/uri.dart'; import 'package:lensai/features/web_feed/data/database/database.dart'; import 'package:lensai/features/web_feed/domain/providers.dart'; @@ -10,6 +9,7 @@ import 'package:lensai/features/web_feed/presentation/widgets/authors_horizontal import 'package:lensai/features/web_feed/presentation/widgets/tags_horizontal_list.dart'; import 'package:lensai/presentation/widgets/rounded_text.dart'; import 'package:lensai/presentation/widgets/url_icon.dart'; +import 'package:nullability/nullability.dart'; import 'package:timeago/timeago.dart' as timeago; class FeedCard extends HookConsumerWidget { diff --git a/app/lib/features/web_feed/presentation/widgets/tags_horizontal_list.dart b/app/lib/features/web_feed/presentation/widgets/tags_horizontal_list.dart index 9424195d..549f554b 100644 --- a/app/lib/features/web_feed/presentation/widgets/tags_horizontal_list.dart +++ b/app/lib/features/web_feed/presentation/widgets/tags_horizontal_list.dart @@ -1,7 +1,7 @@ import 'package:fading_scroll/fading_scroll.dart'; import 'package:flutter/material.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/web_feed/data/models/feed_category.dart'; +import 'package:nullability/nullability.dart'; class TagsHorizontalList extends StatelessWidget { late final List _tags; diff --git a/app/lib/features/web_feed/utils/feed_parser.dart b/app/lib/features/web_feed/utils/feed_parser.dart index 7792cb3f..7d78e6b3 100644 --- a/app/lib/features/web_feed/utils/feed_parser.dart +++ b/app/lib/features/web_feed/utils/feed_parser.dart @@ -1,11 +1,11 @@ import 'package:collection/collection.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/features/web_feed/data/database/database.dart'; import 'package:lensai/features/web_feed/data/models/feed_article.dart'; import 'package:lensai/features/web_feed/data/models/feed_author.dart'; import 'package:lensai/features/web_feed/data/models/feed_link.dart'; import 'package:lensai/features/web_feed/extensions/atom.dart'; import 'package:lensai/features/web_feed/extensions/rss.dart'; +import 'package:nullability/nullability.dart'; import 'package:rss_dart/dart_rss.dart'; import 'package:rss_dart/domain/rss1_feed.dart'; diff --git a/app/lib/presentation/widgets/auto_suggest_text_field.dart b/app/lib/presentation/widgets/auto_suggest_text_field.dart index a6f95cd7..e3544f4b 100644 --- a/app/lib/presentation/widgets/auto_suggest_text_field.dart +++ b/app/lib/presentation/widgets/auto_suggest_text_field.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; -import 'package:lensai/extensions/nullable.dart'; +import 'package:nullability/nullability.dart'; class AutoSuggestTextField extends HookWidget { final TextEditingController controller; diff --git a/app/lib/presentation/widgets/website_feed_tile.dart b/app/lib/presentation/widgets/website_feed_tile.dart index b3f4e973..4ed042d9 100644 --- a/app/lib/presentation/widgets/website_feed_tile.dart +++ b/app/lib/presentation/widgets/website_feed_tile.dart @@ -4,9 +4,9 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lensai/core/routing/routes.dart'; import 'package:lensai/data/models/web_page_info.dart'; -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/presentation/controllers/website_title.dart'; import 'package:lensai/presentation/widgets/rounded_text.dart'; +import 'package:nullability/nullability.dart'; import 'package:skeletonizer/skeletonizer.dart'; class WebsiteFeedTile extends HookConsumerWidget { diff --git a/app/lib/utils/form_validators.dart b/app/lib/utils/form_validators.dart index ddc816a2..de216d71 100644 --- a/app/lib/utils/form_validators.dart +++ b/app/lib/utils/form_validators.dart @@ -1,5 +1,5 @@ -import 'package:lensai/extensions/nullable.dart'; import 'package:lensai/utils/uri_parser.dart' as uri_parser; +import 'package:nullability/nullability.dart'; String? validateUrl( String? value, { diff --git a/app/lib/utils/markdown/image_extractor.dart b/app/lib/utils/markdown/image_extractor.dart index bffda5bf..eaeedbd9 100644 --- a/app/lib/utils/markdown/image_extractor.dart +++ b/app/lib/utils/markdown/image_extractor.dart @@ -1,5 +1,5 @@ -import 'package:lensai/extensions/nullable.dart'; import 'package:markdown/markdown.dart'; +import 'package:nullability/nullability.dart'; import 'package:path/path.dart' as p; List extractImagesFromMarkdown(String markdownText) { diff --git a/app/lib/utils/ui_helper.dart b/app/lib/utils/ui_helper.dart index 366420b9..867a01f4 100644 --- a/app/lib/utils/ui_helper.dart +++ b/app/lib/utils/ui_helper.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:lensai/extensions/nullable.dart'; +import 'package:nullability/nullability.dart'; import 'package:url_launcher/url_launcher.dart'; void showErrorMessage(BuildContext context, String message) { diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 58dd17c9..4d392278 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -59,6 +59,7 @@ dependencies: logger: ^2.5.0 markdown: ^7.3.0 mime: ^2.0.0 + nullability: ^1.0.0 package_info_plus: ^8.3.0 path: ^1.9.1 path_provider: ^2.1.5