copia_db.dart 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import 'dart:io';
  2. import 'package:flutter/material.dart';
  3. import 'package:path_provider/path_provider.dart';
  4. Future<void> copyDatabase(BuildContext context) async {
  5. try {
  6. Directory appDocDir = await getApplicationDocumentsDirectory();
  7. List<String> dbPaths = [
  8. '${appDocDir.path}/databases/conalepPos7.db',
  9. '${appDocDir.path}/conalepPos7.db',
  10. '/data/data/com.example.conalep_pos/databases/conalepPos7.db',
  11. ];
  12. File? dbFile;
  13. for (String path in dbPaths) {
  14. if (await File(path).exists()) {
  15. dbFile = File(path);
  16. break;
  17. }
  18. }
  19. if (dbFile != null) {
  20. Directory? downloadsDir = await getExternalStorageDirectory();
  21. if (downloadsDir == null) {
  22. ScaffoldMessenger.of(context).showSnackBar(
  23. SnackBar(
  24. content: Text('No se pudo acceder al directorio de descargas.')),
  25. );
  26. return;
  27. }
  28. String newPath = '${downloadsDir.path}/conalepPos7_backup.db';
  29. await dbFile.copy(newPath);
  30. ScaffoldMessenger.of(context).showSnackBar(
  31. SnackBar(
  32. content: Text('Copia de la base de datos guardada en Descargas.')),
  33. );
  34. } else {
  35. ScaffoldMessenger.of(context).showSnackBar(
  36. SnackBar(
  37. content: Text(
  38. 'El archivo de la base de datos no existe en ninguna de las rutas verificadas.')),
  39. );
  40. }
  41. } catch (e) {
  42. ScaffoldMessenger.of(context).showSnackBar(
  43. SnackBar(content: Text('Error al copiar la base de datos: $e')),
  44. );
  45. }
  46. }