Extract plaform constants

This commit is contained in:
Ming Ming 2021-04-29 23:42:44 +08:00
parent 45e3140ea9
commit 13772ee742
7 changed files with 28 additions and 17 deletions

View file

@ -6,12 +6,13 @@ import 'package:nc_photos/entity/file.dart';
import 'package:nc_photos/exception.dart'; import 'package:nc_photos/exception.dart';
import 'package:nc_photos/mobile/android/media_store.dart'; import 'package:nc_photos/mobile/android/media_store.dart';
import 'package:nc_photos/platform/downloader.dart' as itf; import 'package:nc_photos/platform/downloader.dart' as itf;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
class Downloader extends itf.Downloader { class Downloader extends itf.Downloader {
@override @override
downloadFile(Account account, File file) { downloadFile(Account account, File file) {
if (Platform.isAndroid) { if (platform_k.isAndroid) {
return _downloadFileAndroid(account, file); return _downloadFileAndroid(account, file);
} else { } else {
throw UnimplementedError(); throw UnimplementedError();

View file

@ -1,5 +1,3 @@
import 'dart:io'; import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:flutter/foundation.dart'; final isSupportMapView = platform_k.isWeb || platform_k.isAndroid;
final isSupportMapView = kIsWeb || Platform.isAndroid;

7
lib/platform/k.dart Normal file
View file

@ -0,0 +1,7 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
const isWeb = kIsWeb;
// Platform n/a on web, need checking kIsWeb first
final isAndroid = !kIsWeb && Platform.isAndroid;

View file

@ -8,6 +8,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/session_storage.dart'; import 'package:nc_photos/session_storage.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/theme.dart'; import 'package:nc_photos/theme.dart';
@ -37,7 +38,7 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
BuildContext context, { BuildContext context, {
@required Widget child, @required Widget child,
}) { }) {
if (kIsWeb) { if (platform_k.isWeb) {
// support switching pages with keyboard on web // support switching pages with keyboard on web
return RawKeyboardListener( return RawKeyboardListener(
onKey: (ev) { onKey: (ev) {
@ -108,7 +109,7 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
return _SelectableItemWidget( return _SelectableItemWidget(
isSelected: _selectedItems.contains(item), isSelected: _selectedItems.contains(item),
onTap: () => _onItemTap(item, index), onTap: () => _onItemTap(item, index),
onLongPress: isSelectionMode && kIsWeb onLongPress: isSelectionMode && platform_k.isWeb
? null ? null
: () => _onItemLongPress(item, index), : () => _onItemLongPress(item, index),
child: item.buildWidget(context), child: item.buildWidget(context),
@ -159,7 +160,7 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
return; return;
} }
final wasSelectionMode = isSelectionMode; final wasSelectionMode = isSelectionMode;
if (!kIsWeb && wasSelectionMode && _lastSelectPosition != null) { if (!platform_k.isWeb && wasSelectionMode && _lastSelectPosition != null) {
setState(() { setState(() {
_selectedItems.addAll(_items _selectedItems.addAll(_items
.sublist(math.min(_lastSelectPosition, index), .sublist(math.min(_lastSelectPosition, index),
@ -178,7 +179,7 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
if (!wasSelectionMode) { if (!wasSelectionMode) {
if (!SessionStorage().hasShowRangeSelectNotification) { if (!SessionStorage().hasShowRangeSelectNotification) {
SnackBarManager().showSnackBar(SnackBar( SnackBarManager().showSnackBar(SnackBar(
content: Text(kIsWeb content: Text(platform_k.isWeb
? AppLocalizations.of(context).webSelectRangeNotification ? AppLocalizations.of(context).webSelectRangeNotification
: AppLocalizations.of(context).mobileSelectRangeNotification), : AppLocalizations.of(context).mobileSelectRangeNotification),
duration: k.snackBarDurationNormal, duration: k.snackBarDurationNormal,

View file

@ -5,6 +5,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
import 'package:nc_photos/list_extension.dart'; import 'package:nc_photos/list_extension.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/pref.dart'; import 'package:nc_photos/pref.dart';
import 'package:nc_photos/string_extension.dart'; import 'package:nc_photos/string_extension.dart';
import 'package:nc_photos/theme.dart'; import 'package:nc_photos/theme.dart';
@ -62,7 +63,7 @@ class _SignInState extends State<SignIn> {
child: _buildForm(context), child: _buildForm(context),
), ),
), ),
if (!kIsWeb) Expanded(child: Container()), if (!platform_k.isWeb) Expanded(child: Container()),
Container( Container(
constraints: const BoxConstraints( constraints: const BoxConstraints(
maxWidth: AppTheme.widthLimitedContentMaxWidth), maxWidth: AppTheme.widthLimitedContentMaxWidth),

View file

@ -18,6 +18,7 @@ import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/platform.dart' import 'package:nc_photos/mobile/platform.dart'
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform; if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/theme.dart'; import 'package:nc_photos/theme.dart';
import 'package:nc_photos/use_case/remove.dart'; import 'package:nc_photos/use_case/remove.dart';
@ -78,14 +79,15 @@ class _ViewerState extends State<Viewer> with TickerProviderStateMixin {
return AppTheme( return AppTheme(
child: Scaffold( child: Scaffold(
body: Builder( body: Builder(
builder: (context) => builder: (context) => platform_k.isWeb
kIsWeb ? _buildWebContent(context) : _buildContent(context)), ? _buildWebContent(context)
: _buildContent(context)),
), ),
); );
} }
Widget _buildWebContent(BuildContext context) { Widget _buildWebContent(BuildContext context) {
assert(kIsWeb); assert(platform_k.isWeb);
// support switching pages with keyboard on web // support switching pages with keyboard on web
return RawKeyboardListener( return RawKeyboardListener(
onKey: (ev) { onKey: (ev) {
@ -147,11 +149,11 @@ class _ViewerState extends State<Viewer> with TickerProviderStateMixin {
controller: _pageController, controller: _pageController,
itemCount: widget.streamFiles.length, itemCount: widget.streamFiles.length,
itemBuilder: _buildPage, itemBuilder: _buildPage,
physics: !kIsWeb && _canSwitchPage() physics: !platform_k.isWeb && _canSwitchPage()
? null ? null
: const NeverScrollableScrollPhysics(), : const NeverScrollableScrollPhysics(),
), ),
if (kIsWeb) ..._buildNavigationButtons(context), if (platform_k.isWeb) ..._buildNavigationButtons(context),
_buildBottomAppBar(context), _buildBottomAppBar(context),
_buildAppBar(context), _buildAppBar(context),
], ],
@ -793,7 +795,7 @@ class _ViewerState extends State<Viewer> with TickerProviderStateMixin {
/// Update the navigation state for [page] /// Update the navigation state for [page]
void _updateNavigationState(int page) { void _updateNavigationState(int page) {
// currently useless to run on non-web platform // currently useless to run on non-web platform
if (!kIsWeb) { if (!platform_k.isWeb) {
return; return;
} }
final hasNext = page < widget.streamFiles.length - 1; final hasNext = page < widget.streamFiles.length - 1;

View file

@ -19,6 +19,7 @@ import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/platform.dart' import 'package:nc_photos/mobile/platform.dart'
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform; if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;
import 'package:nc_photos/platform/features.dart' as features; import 'package:nc_photos/platform/features.dart' as features;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/theme.dart'; import 'package:nc_photos/theme.dart';
import 'package:nc_photos/use_case/remove.dart'; import 'package:nc_photos/use_case/remove.dart';
@ -242,7 +243,7 @@ class _ViewerDetailPaneState extends State<ViewerDetailPane> {
} }
void _onMapTap() { void _onMapTap() {
if (Platform.isAndroid) { if (platform_k.isAndroid) {
final intent = AndroidIntent( final intent = AndroidIntent(
action: "action_view", action: "action_view",
data: Uri.encodeFull("geo:${_gps.item1},${_gps.item2}?z=16"), data: Uri.encodeFull("geo:${_gps.item1},${_gps.item2}?z=16"),