'Error: Couldn't resolve the package 'path_provider' in 'package:path_provider/path_provider.dart' if (dart.library.io) import using
I know that the path_provider is not meant for the web. And I'm trying to separate implementations for web and mobile platforms through imports of the respective files, however, I get an error ONLY when compiling.
Please help me.
Error:
Error: Couldn't resolve the package 'path_provider' in 'package:path_provider/path_provider.dart'.
packages/locale_cache/lib/database/database_helper_mobile.dart:12:8: Error: Not found: 'package:path_provider/path_provider.dart'
import 'package:path_provider/path_provider.dart' as paths;
^
packages/locale_cache/lib/database/database_helper_mobile.dart:21:33: Error: Method not found: 'getApplicationDocumentsDirectory'.
final dir = await paths.getApplicationDocumentsDirectory();
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
packages/locale_cache/lib/database/database_helper_mobile.dart:42:29: Error: Method not found: 'getApplicationDocumentsDirectory'.
final dir = await paths.getApplicationDocumentsDirectory();
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Unhandled exception:
FileSystemException(uri=org-dartlang-untranslatable-uri:package%3Apath_provider%2Fpath_provider.dart; message=StandardFileSystem only supports file:* and data:* URIs)
#0 StandardFileSystem.entityForUri (package:front_end/src/api_prototype/standard_file_system.dart:34:7)
#1 asFileUri (package:vm/kernel_front_end.dart:623:37)
#2 writeDepfile (package:vm/kernel_front_end.dart:763:21)
<asynchronous suspension>
#3 FrontendCompiler.compile (package:frontend_server/frontend_server.dart:586:9)
<asynchronous suspension>
#4 starter (package:flutter_frontend_server/server.dart:85:12)
<asynchronous suspension>
#5 main (file:///C:/b/s/w/ir/cache/builder/src/flutter/flutter_frontend_server/bin/starter.dart:13:24)
<asynchronous suspension>
dependencies:
dev_dependencies:
build_runner: 2.1.7
drift_dev: 1.4.0
flutter_lints: 1.0.0
flutter_test:
sdk: flutter
injectable_generator: 1.5.2
path_provider: 2.0.2
Common file
import 'package:drift/drift.dart';
import 'package:drift/isolate.dart';
import 'package:locale_cache/database/database_getter.dart';
abstract class DatabaseHelper {
factory DatabaseHelper() => getDatabaseHelper();
LazyDatabase createConnection({bool logStatements = false}) => throw Exception('Platform not supported');
Future<DriftIsolate> createDriftIsolate({bool logStatements = false}) async => throw Exception('Platform not supported');
}
database_getter.dart
import 'package:locale_cache/database/database_helper.dart';
DatabaseHelper getDatabaseHelper() => throw UnsupportedError('Cannot create abstract class');
database_helper_web.dart
import 'package:drift/drift.dart';
import 'package:drift/isolate.dart';
import 'package:locale_cache/database/database_helper.dart';
class DatabaseHelperWeb implements DatabaseHelper {
@override
LazyDatabase createConnection({bool logStatements = false}) => throw Exception('Platform not supported');
@override
Future<DriftIsolate> createDriftIsolate({bool logStatements = false}) => throw Exception('Platform not supported');
}
DatabaseHelper getDatabaseHelper() => DatabaseHelperWeb();
database_helper_mobile.dart
import 'dart:async';
import 'dart:io';
import 'dart:isolate';
import 'package:drift/drift.dart';
import 'package:drift/isolate.dart';
import 'package:drift/native.dart';
import 'package:flutter/material.dart';
import 'package:locale_cache/database/database_helper.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart' as paths;
class DatabaseHelperMobile implements DatabaseHelper {
@override
LazyDatabase createConnection({bool logStatements = false}) {
// some work
}
@override
Future<DriftIsolate> createDriftIsolate({bool logStatements = false}) async {
// some work
}
}
DatabaseHelper getDatabaseHelper() => DatabaseHelperMobile();
How I use it
import 'package:locale_cache/database/database_helper.dart' if (dart.library.html) 'database_helper_web.dart' if (dart.library.io) 'database_helper_mobile.dart';
final DatabaseHelper _databaseHelper = DatabaseHelper();
P.s. I have tried flutter clean and pub get
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
