@@ -81,21 +81,23 @@ class DartBridgeFileManager {
8181
8282 /// Create directory structure (Models, Cache, Temp, Downloads).
8383 static bool createDirectoryStructure () {
84- final fn = _lookup< Int32 Function (Pointer <RacFileCallbacksStruct >),
84+ final lib = _lib ();
85+ if (lib == null || _callbacksPtr == null ) return false ;
86+ final fn = lib.lookupFunction< Int32 Function (Pointer <RacFileCallbacksStruct >),
8587 int Function (Pointer <RacFileCallbacksStruct >)> (
8688 'rac_file_manager_create_directory_structure' );
87- if (fn == null || _callbacksPtr == null ) return false ;
8889 return fn (_callbacksPtr! ) == RacResultCode .success;
8990 }
9091
9192 /// Calculate directory size recursively.
9293 static int calculateDirectorySize (String path) {
93- final fn = _lookup<
94+ final lib = _lib ();
95+ if (lib == null || _callbacksPtr == null ) return 0 ;
96+ final fn = lib.lookupFunction<
9497 Int32 Function (
9598 Pointer <RacFileCallbacksStruct >, Pointer <Utf8 >, Pointer <Int64 >),
9699 int Function (Pointer <RacFileCallbacksStruct >, Pointer <Utf8 >,
97100 Pointer <Int64 >)> ('rac_file_manager_calculate_dir_size' );
98- if (fn == null || _callbacksPtr == null ) return 0 ;
99101
100102 final pathPtr = path.toNativeUtf8 ();
101103 final sizePtr = calloc <Int64 >();
@@ -110,12 +112,13 @@ class DartBridgeFileManager {
110112
111113 /// Get total models storage used.
112114 static int modelsStorageUsed () {
113- final fn = _lookup<
115+ final lib = _lib ();
116+ if (lib == null || _callbacksPtr == null ) return 0 ;
117+ final fn = lib.lookupFunction<
114118 Int32 Function (Pointer <RacFileCallbacksStruct >, Pointer <Int64 >),
115119 int Function (
116120 Pointer <RacFileCallbacksStruct >, Pointer <Int64 >)> (
117121 'rac_file_manager_models_storage_used' );
118- if (fn == null || _callbacksPtr == null ) return 0 ;
119122
120123 final sizePtr = calloc <Int64 >();
121124 try {
@@ -128,30 +131,33 @@ class DartBridgeFileManager {
128131
129132 /// Clear cache directory.
130133 static bool clearCache () {
131- final fn = _lookup< Int32 Function (Pointer <RacFileCallbacksStruct >),
134+ final lib = _lib ();
135+ if (lib == null || _callbacksPtr == null ) return false ;
136+ final fn = lib.lookupFunction< Int32 Function (Pointer <RacFileCallbacksStruct >),
132137 int Function (Pointer <RacFileCallbacksStruct >)> (
133138 'rac_file_manager_clear_cache' );
134- if (fn == null || _callbacksPtr == null ) return false ;
135139 return fn (_callbacksPtr! ) == RacResultCode .success;
136140 }
137141
138142 /// Clear temp directory.
139143 static bool clearTemp () {
140- final fn = _lookup< Int32 Function (Pointer <RacFileCallbacksStruct >),
144+ final lib = _lib ();
145+ if (lib == null || _callbacksPtr == null ) return false ;
146+ final fn = lib.lookupFunction< Int32 Function (Pointer <RacFileCallbacksStruct >),
141147 int Function (Pointer <RacFileCallbacksStruct >)> (
142148 'rac_file_manager_clear_temp' );
143- if (fn == null || _callbacksPtr == null ) return false ;
144149 return fn (_callbacksPtr! ) == RacResultCode .success;
145150 }
146151
147152 /// Get cache size.
148153 static int cacheSize () {
149- final fn = _lookup<
154+ final lib = _lib ();
155+ if (lib == null || _callbacksPtr == null ) return 0 ;
156+ final fn = lib.lookupFunction<
150157 Int32 Function (Pointer <RacFileCallbacksStruct >, Pointer <Int64 >),
151158 int Function (
152159 Pointer <RacFileCallbacksStruct >, Pointer <Int64 >)> (
153160 'rac_file_manager_cache_size' );
154- if (fn == null || _callbacksPtr == null ) return 0 ;
155161
156162 final sizePtr = calloc <Int64 >();
157163 try {
@@ -164,12 +170,13 @@ class DartBridgeFileManager {
164170
165171 /// Create a model folder and return its path.
166172 static String ? createModelFolder (String modelId, int framework) {
167- final fn = _lookup<
173+ final lib = _lib ();
174+ if (lib == null || _callbacksPtr == null ) return null ;
175+ final fn = lib.lookupFunction<
168176 Int32 Function (Pointer <RacFileCallbacksStruct >, Pointer <Utf8 >, Int32 ,
169177 Pointer <Utf8 >, Size ),
170178 int Function (Pointer <RacFileCallbacksStruct >, Pointer <Utf8 >, int ,
171179 Pointer <Utf8 >, int )> ('rac_file_manager_create_model_folder' );
172- if (fn == null || _callbacksPtr == null ) return null ;
173180
174181 final modelIdPtr = modelId.toNativeUtf8 ();
175182 const bufSize = 1024 ;
@@ -186,13 +193,14 @@ class DartBridgeFileManager {
186193
187194 /// Check if a model folder exists.
188195 static bool modelFolderExists (String modelId, int framework) {
189- final fn = _lookup<
196+ final lib = _lib ();
197+ if (lib == null || _callbacksPtr == null ) return false ;
198+ final fn = lib.lookupFunction<
190199 Int32 Function (Pointer <RacFileCallbacksStruct >, Pointer <Utf8 >, Int32 ,
191200 Pointer <Int32 >, Pointer <Int32 >),
192201 int Function (Pointer <RacFileCallbacksStruct >, Pointer <Utf8 >, int ,
193202 Pointer <Int32 >, Pointer <Int32 >)> (
194203 'rac_file_manager_model_folder_exists' );
195- if (fn == null || _callbacksPtr == null ) return false ;
196204
197205 final modelIdPtr = modelId.toNativeUtf8 ();
198206 final existsPtr = calloc <Int32 >();
@@ -206,20 +214,21 @@ class DartBridgeFileManager {
206214 }
207215
208216 /// Get combined storage information.
209- static StorageInfo ? getStorageInfo () {
210- final fn = _lookup<
217+ static NativeStorageInfo ? getStorageInfo () {
218+ final lib = _lib ();
219+ if (lib == null || _callbacksPtr == null ) return null ;
220+ final fn = lib.lookupFunction<
211221 Int32 Function (
212222 Pointer <RacFileCallbacksStruct >, Pointer <RacFileManagerStorageInfoStruct >),
213223 int Function (Pointer <RacFileCallbacksStruct >,
214224 Pointer <RacFileManagerStorageInfoStruct >)> (
215225 'rac_file_manager_get_storage_info' );
216- if (fn == null || _callbacksPtr == null ) return null ;
217226
218227 final infoPtr = calloc <RacFileManagerStorageInfoStruct >();
219228 try {
220229 final result = fn (_callbacksPtr! , infoPtr);
221230 if (result != RacResultCode .success) return null ;
222- return StorageInfo (
231+ return NativeStorageInfo (
223232 deviceTotal: infoPtr.ref.deviceTotal,
224233 deviceFree: infoPtr.ref.deviceFree,
225234 modelsSize: infoPtr.ref.modelsSize,
@@ -234,21 +243,22 @@ class DartBridgeFileManager {
234243
235244 /// Check storage availability via C++ rac_file_manager_check_storage.
236245 /// Returns full availability result including warnings and recommendations.
237- static StorageAvailability ? checkStorageAvailability (int requiredBytes) {
238- final fn = _lookup<
246+ static NativeStorageAvailability ? checkStorageAvailability (int requiredBytes) {
247+ final lib = _lib ();
248+ if (lib == null || _callbacksPtr == null ) return null ;
249+ final fn = lib.lookupFunction<
239250 Int32 Function (Pointer <RacFileCallbacksStruct >, Int64 ,
240251 Pointer <RacStorageAvailabilityStruct >),
241252 int Function (Pointer <RacFileCallbacksStruct >, int ,
242253 Pointer <RacStorageAvailabilityStruct >)> (
243254 'rac_file_manager_check_storage' );
244- if (fn == null || _callbacksPtr == null ) return null ;
245255
246256 final availPtr = calloc <RacStorageAvailabilityStruct >();
247257 try {
248258 final result = fn (_callbacksPtr! , requiredBytes, availPtr);
249259 if (result != RacResultCode .success) return null ;
250260 final rec = availPtr.ref.recommendation;
251- return StorageAvailability (
261+ return NativeStorageAvailability (
252262 isAvailable: availPtr.ref.isAvailable == RAC_TRUE ,
253263 requiredSpace: availPtr.ref.requiredSpace,
254264 availableSpace: availPtr.ref.availableSpace,
@@ -270,12 +280,13 @@ class DartBridgeFileManager {
270280
271281 /// Delete a model folder.
272282 static bool deleteModel (String modelId, int framework) {
273- final fn = _lookup<
283+ final lib = _lib ();
284+ if (lib == null || _callbacksPtr == null ) return false ;
285+ final fn = lib.lookupFunction<
274286 Int32 Function (
275287 Pointer <RacFileCallbacksStruct >, Pointer <Utf8 >, Int32 ),
276288 int Function (Pointer <RacFileCallbacksStruct >, Pointer <Utf8 >,
277289 int )> ('rac_file_manager_delete_model' );
278- if (fn == null || _callbacksPtr == null ) return false ;
279290
280291 final modelIdPtr = modelId.toNativeUtf8 ();
281292 try {
@@ -290,12 +301,11 @@ class DartBridgeFileManager {
290301 // Private helpers
291302 // =========================================================================
292303
293- static F ? _lookup < T extends Function , F extends Function >( String name ) {
304+ static DynamicLibrary ? _lib ( ) {
294305 try {
295- final lib = PlatformLoader .loadCommons ();
296- return lib.lookupFunction <T , F >(name);
306+ return PlatformLoader .loadCommons ();
297307 } catch (e) {
298- _logger.debug ('$ name not available: $e ' );
308+ _logger.debug ('Native library not available: $e ' );
299309 return null ;
300310 }
301311 }
@@ -306,14 +316,14 @@ class DartBridgeFileManager {
306316// =============================================================================
307317
308318/// Storage availability result from C++ rac_file_manager_check_storage.
309- class StorageAvailability {
319+ class NativeStorageAvailability {
310320 final bool isAvailable;
311321 final int requiredSpace;
312322 final int availableSpace;
313323 final bool hasWarning;
314324 final String ? recommendation;
315325
316- const StorageAvailability ({
326+ const NativeStorageAvailability ({
317327 required this .isAvailable,
318328 required this .requiredSpace,
319329 required this .availableSpace,
@@ -323,15 +333,15 @@ class StorageAvailability {
323333}
324334
325335/// Combined storage information from C++ file manager.
326- class StorageInfo {
336+ class NativeStorageInfo {
327337 final int deviceTotal;
328338 final int deviceFree;
329339 final int modelsSize;
330340 final int cacheSize;
331341 final int tempSize;
332342 final int totalAppSize;
333343
334- const StorageInfo ({
344+ const NativeStorageInfo ({
335345 required this .deviceTotal,
336346 required this .deviceFree,
337347 required this .modelsSize,
0 commit comments