parent
fcd34d4fb1
commit
fca7ffda93
7 changed files with 61 additions and 11 deletions
|
@ -218,8 +218,12 @@ class Record {
|
|||
|
||||
bool get isRoot => this == _rootRecord;
|
||||
|
||||
bool get isLink => assetUri.startsWith("resrec");
|
||||
|
||||
bool get isItem => assetUri.startsWith("resdb");
|
||||
|
||||
String get linkRecordId {
|
||||
if (!assetUri.startsWith("resrec")) {
|
||||
if (!isLink) {
|
||||
throw "Record is not a link.";
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,9 @@ import 'dart:async';
|
|||
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:photo_view/photo_view.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:recon/auxiliary.dart';
|
||||
import 'package:recon/clients/inventory_client.dart';
|
||||
import 'package:recon/models/inventory/resonite_directory.dart';
|
||||
|
@ -9,9 +12,6 @@ import 'package:recon/models/records/record.dart';
|
|||
import 'package:recon/widgets/default_error_widget.dart';
|
||||
import 'package:recon/widgets/inventory/object_inventory_tile.dart';
|
||||
import 'package:recon/widgets/inventory/path_inventory_tile.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:photo_view/photo_view.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class InventoryBrowser extends StatefulWidget {
|
||||
const InventoryBrowser({super.key});
|
||||
|
@ -127,16 +127,23 @@ class _InventoryBrowserState extends State<InventoryBrowser> with AutomaticKeepA
|
|||
shrinkWrap: true,
|
||||
itemCount: paths.length,
|
||||
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
|
||||
maxCrossAxisExtent: 256,
|
||||
childAspectRatio: 3.5,
|
||||
crossAxisSpacing: 0,
|
||||
mainAxisSpacing: 0),
|
||||
maxCrossAxisExtent: 256,
|
||||
childAspectRatio: 3.5,
|
||||
crossAxisSpacing: 0,
|
||||
mainAxisSpacing: 0,
|
||||
),
|
||||
itemBuilder: (context, index) {
|
||||
final record = paths[index];
|
||||
return PathInventoryTile(
|
||||
record: record,
|
||||
selected: iClient.isRecordSelected(record),
|
||||
onLongPress: () async {
|
||||
iClient.toggleRecordSelected(record);
|
||||
},
|
||||
onTap: iClient.isAnyRecordSelected
|
||||
? () {}
|
||||
? () {
|
||||
iClient.toggleRecordSelected(record);
|
||||
}
|
||||
: () async {
|
||||
try {
|
||||
await iClient.navigateTo(record);
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
import 'dart:isolate';
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:recon/auxiliary.dart';
|
||||
import 'package:recon/clients/inventory_client.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_downloader/flutter_downloader.dart';
|
||||
import 'package:path/path.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:recon/auxiliary.dart';
|
||||
import 'package:recon/clients/inventory_client.dart';
|
||||
import 'package:share_plus/share_plus.dart';
|
||||
|
||||
class InventoryBrowserAppBar extends StatefulWidget {
|
||||
const InventoryBrowserAppBar({super.key});
|
||||
|
@ -71,6 +72,15 @@ class _InventoryBrowserAppBarState extends State<InventoryBrowserAppBar> {
|
|||
icon: const Icon(Icons.close),
|
||||
),
|
||||
actions: [
|
||||
if (iClient.selectedRecordCount == 1 &&
|
||||
(iClient.selectedRecords.firstOrNull?.isLink == true ||
|
||||
iClient.selectedRecords.firstOrNull?.isItem == true))
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
Share.share(iClient.selectedRecords.first.assetUri);
|
||||
},
|
||||
icon: const Icon(Icons.share),
|
||||
),
|
||||
if (iClient.onlyFilesSelected)
|
||||
IconButton(
|
||||
onPressed: () async {
|
||||
|
|
24
pubspec.lock
24
pubspec.lock
|
@ -504,6 +504,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.1"
|
||||
mime:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: mime
|
||||
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
nested:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -752,6 +760,22 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.27.7"
|
||||
share_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: share_plus
|
||||
sha256: "6cec740fa0943a826951223e76218df002804adb588235a8910dc3d6b0654e11"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.1.0"
|
||||
share_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: share_plus_platform_interface
|
||||
sha256: "357412af4178d8e11d14f41723f80f12caea54cf0d5cd29af9dcdab85d58aea7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.0"
|
||||
sky_engine:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
|
|
|
@ -63,6 +63,7 @@ dependencies:
|
|||
permission_handler: ^10.2.0
|
||||
flutter_downloader: ^1.10.4
|
||||
flutter_cube: ^0.1.1
|
||||
share_plus: ^7.1.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
|
||||
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||
#include <record_windows/record_windows_plugin_c_api.h>
|
||||
#include <share_plus/share_plus_windows_plugin_c_api.h>
|
||||
#include <url_launcher_windows/url_launcher_windows.h>
|
||||
|
||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
|
@ -21,6 +22,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
|||
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
||||
RecordWindowsPluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("RecordWindowsPluginCApi"));
|
||||
SharePlusWindowsPluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
|
||||
UrlLauncherWindowsRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
|||
flutter_secure_storage_windows
|
||||
permission_handler_windows
|
||||
record_windows
|
||||
share_plus
|
||||
url_launcher_windows
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in a new issue