diff --git a/.metadata b/.metadata index 40c9198..905ccfb 100644 --- a/.metadata +++ b/.metadata @@ -1,10 +1,30 @@ # This file tracks properties of this Flutter project. # Used by Flutter tool to assess capabilities and perform upgrades etc. # -# This file should be version controlled and should not be manually edited. +# This file should be version controlled. version: - revision: 37de8a2a9ad217ec9d731f8af0bd7c83e8f4980c - channel: master + revision: f92f44110e87bad5ff168335c36da6f6053036e6 + channel: stable project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: f92f44110e87bad5ff168335c36da6f6053036e6 + base_revision: f92f44110e87bad5ff168335c36da6f6053036e6 + - platform: web + create_revision: f92f44110e87bad5ff168335c36da6f6053036e6 + base_revision: f92f44110e87bad5ff168335c36da6f6053036e6 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/lib/db/database.dart b/lib/db/database.dart index 224509a..aee1bfa 100644 --- a/lib/db/database.dart +++ b/lib/db/database.dart @@ -1,7 +1,8 @@ import 'package:flutter/foundation.dart'; import 'package:path/path.dart'; import 'package:sqflite/sqflite.dart'; -import 'package:sqflite_common_ffi/sqflite_ffi.dart'; +import 'package:sqflite_common_ffi/sqflite_ffi.dart' as nativeffi; +import 'package:sqflite_common_ffi_web/sqflite_ffi_web.dart' as webffi; import '../log/log.dart'; @@ -9,19 +10,19 @@ class Db { late Database _db; Future init() async { - if (kIsWeb) { - Log.i("Database on web is not supported"); - return; - } String dbpath = 'previews.db'; if (defaultTargetPlatform == TargetPlatform.android || defaultTargetPlatform == TargetPlatform.iOS) { dbpath = join(await getDatabasesPath(), dbpath); + } else if(kIsWeb) { + databaseFactory = webffi.databaseFactoryFfiWeb; } else { + + // Initialize FFI - sqfliteFfiInit(); + nativeffi.sqfliteFfiInit(); // Change the default factory - databaseFactory = databaseFactoryFfi; + databaseFactory = nativeffi.databaseFactoryFfi; } _db = await openDatabase( diff --git a/lib/main.dart b/lib/main.dart index f9f4aa2..c8671f5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:media_kit/media_kit.dart'; @@ -13,9 +14,13 @@ void main() async { WidgetsFlutterBinding.ensureInitialized(); MediaKit.ensureInitialized(); - if (!isDesktop()) { + if (!kIsWeb && !isDesktop()) { + Log.i("init device info"); await loadDeviceInfo(); } + + Log.i("Mediakit initialized"); + await Db().init(); runApp(Shortcuts(shortcuts: { diff --git a/lib/preview/preview_tile.dart b/lib/preview/preview_tile.dart index 5c66bde..7a42490 100644 --- a/lib/preview/preview_tile.dart +++ b/lib/preview/preview_tile.dart @@ -76,7 +76,8 @@ class _PreviewTileState extends State { ); // precache image to avoid loading time to render image - await precacheImage(img.image, context); + if(context.mounted) + await precacheImage(img.image, context); return img; } @@ -103,28 +104,28 @@ class _PreviewTileState extends State { child: Stack( children: [ Container( + color: const Color(0xff3f3f3f), child: Column( children: [ ClipRRect( - child: image, borderRadius: BorderRadius.circular(20.0), + child: image, ), - SizedBox( + const SizedBox( height: 3, ), Text( widget.dta.title, style: TextStyle( - fontSize: isTV() ? 8 : 10.5, color: Color(0xffe9e9e9)), + fontSize: isTV() ? 8 : 10.5, color: const Color(0xffe9e9e9)), overflow: TextOverflow.clip, maxLines: 1, ), - SizedBox( + const SizedBox( height: 3, ), ], ), - color: Color(0xff3f3f3f), ), Positioned.fill( child: Material( @@ -157,21 +158,24 @@ class _PreviewTileState extends State { @override Widget build(BuildContext context) { - return FutureBuilder( - future: _preview, // a previously-obtained Future or null - builder: (BuildContext context, AsyncSnapshot snapshot) { - if (snapshot.connectionState != ConnectionState.done) { - return _buildLoader(); - } + return ConstrainedBox( + constraints: const BoxConstraints(minHeight: 200, minWidth: 200), + child: FutureBuilder( + future: _preview, // a previously-obtained Future or null + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState != ConnectionState.done) { + return _buildLoader(); + } - if (snapshot.hasError) { - return Text("Error"); - } else if (snapshot.hasData) { - return _buildTile(snapshot.data!); - } else { - return _buildLoader(); - } - }, + if (snapshot.hasError) { + return Text("Error"); + } else if (snapshot.hasData) { + return _buildTile(snapshot.data!); + } else { + return _buildLoader(); + } + }, + ), ); } } diff --git a/pubspec.lock b/pubspec.lock index 7d49055..ea98d25 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,30 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a + url: "https://pub.dev" + source: hosted + version: "61.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 + url: "https://pub.dev" + source: hosted + version: "5.13.0" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" async: dependency: transitive description: @@ -25,6 +49,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" + charcode: + dependency: transitive + description: + name: charcode + sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 + url: "https://pub.dev" + source: hosted + version: "1.3.1" clock: dependency: transitive description: @@ -41,6 +73,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.17.1" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + coverage: + dependency: transitive + description: + name: coverage + sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097" + url: "https://pub.dev" + source: hosted + version: "1.6.3" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" cupertino_icons: dependency: "direct main" description: @@ -49,6 +105,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" + dev_test: + dependency: transitive + description: + name: dev_test + sha256: "0d49b920844062a518edb79fc1dbf9ff6d9bf3c9ab600e3847b7502c27c0caab" + url: "https://pub.dev" + source: hosted + version: "0.16.1+4" device_info_plus: dependency: "direct main" description: @@ -120,6 +184,22 @@ packages: description: flutter source: sdk version: "0.0.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + url: "https://pub.dev" + source: hosted + version: "3.2.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" http: dependency: "direct main" description: @@ -128,6 +208,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.13.5" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" + source: hosted + version: "3.2.1" http_parser: dependency: transitive description: @@ -136,6 +224,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" + io: + dependency: transitive + description: + name: io + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" + source: hosted + version: "1.0.4" js: dependency: transitive description: @@ -160,6 +256,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + logging: + dependency: transitive + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" + source: hosted + version: "1.2.0" matcher: dependency: transitive description: @@ -224,6 +328,30 @@ 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" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" path: dependency: "direct main" description: @@ -240,6 +368,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.3" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + process_run: + dependency: transitive + description: + name: process_run + sha256: "0071cece7ca0fdf4aaf2cf84ee3082f3043f18afc7fcfd51f53f9424a8072c04" + url: "https://pub.dev" + source: hosted + version: "0.13.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" safe_local_storage: dependency: transitive description: @@ -296,11 +448,59 @@ packages: url: "https://pub.dev" source: hosted version: "0.1.1" + shelf: + dependency: transitive + description: + name: shelf + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" + source: hosted + version: "1.4.1" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e + url: "https://pub.dev" + source: hosted + version: "1.1.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" + source: hosted + version: "1.0.4" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" + url: "https://pub.dev" + source: hosted + version: "0.10.12" source_span: dependency: transitive description: @@ -321,26 +521,34 @@ packages: dependency: transitive description: name: sqflite_common - sha256: "0c21a187d645aa65da5be6997c0c713eed61e049158870ae2de157e6897067ab" + sha256: "8f7603f3f8f126740bc55c4ca2d1027aab4b74a1267a3e31ce51fe40e3b65b8f" url: "https://pub.dev" source: hosted - version: "2.4.0+2" + version: "2.4.5+1" sqflite_common_ffi: dependency: "direct main" description: name: sqflite_common_ffi - sha256: "9c922744759dc8364ae724af2620acf25aba2e7756aae7844b98649e6fd29f11" + sha256: f86de82d37403af491b21920a696b19f01465b596f545d1acd4d29a0a72418ad url: "https://pub.dev" source: hosted - version: "2.2.0+1" + version: "2.2.5" + sqflite_common_ffi_web: + dependency: "direct main" + description: + name: sqflite_common_ffi_web + sha256: eb8cd50fa1451e8fa5edf5860d68d504572afaf1e68079933f95e95bf273d445 + url: "https://pub.dev" + source: hosted + version: "0.3.6" sqlite3: dependency: transitive description: name: sqlite3 - sha256: db6350456720a4088a364bbe02052d43056a5ffbd4816fe9d28310dcfbe0dc05 + sha256: f7511ddd6a2dda8ded9d849f8a925bb6020e0faa59db2443debc18d484e59401 url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "2.0.0" stack_trace: dependency: transitive description: @@ -381,6 +589,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.1" + test: + dependency: transitive + description: + name: test + sha256: "3dac9aecf2c3991d09b9cdde4f98ded7b30804a88a0d7e4e7e1678e78d6b97f4" + url: "https://pub.dev" + source: hosted + version: "1.24.1" test_api: dependency: transitive description: @@ -389,6 +605,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.1" + test_core: + dependency: transitive + description: + name: test_core + sha256: "5138dbffb77b2289ecb12b81c11ba46036590b72a64a7a90d6ffb880f1a29e93" + url: "https://pub.dev" + source: hosted + version: "0.5.1" typed_data: dependency: transitive description: @@ -421,6 +645,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: b8c67f5fa3897b122cf60fe9ff314f7b0ef71eab25c5f8b771480bc338f48823 + url: "https://pub.dev" + source: hosted + version: "11.7.2" volume_controller: dependency: transitive description: @@ -469,6 +701,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.1" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + url: "https://pub.dev" + source: hosted + version: "2.4.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" + url: "https://pub.dev" + source: hosted + version: "1.2.0" win32: dependency: transitive description: @@ -477,6 +733,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" sdks: - dart: ">=3.0.0-0 <4.0.0" + dart: ">=3.0.0 <4.0.0" flutter: ">=3.7.0" diff --git a/pubspec.yaml b/pubspec.yaml index 53b59b0..399d7a8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -41,6 +41,7 @@ dependencies: sqflite: ^2.0.3+1 path: ^1.8.1 sqflite_common_ffi: ^2.1.1+1 + sqflite_common_ffi_web: '^0.3.6' media_kit: ^1.0.2 # Primary package.