mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-24 18:38:48 +01:00
Extract plaform constants
This commit is contained in:
parent
45e3140ea9
commit
13772ee742
7 changed files with 28 additions and 17 deletions
|
@ -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();
|
||||||
|
|
|
@ -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
7
lib/platform/k.dart
Normal 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;
|
|
@ -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,
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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"),
|
||||||
|
|
Loading…
Reference in a new issue