lib/main.dart:错误:读取“lib/main.dart”时出错:但该文件存在于该位置

问题描述 投票:0回答:1

我有一个正在运行的应用程序,我添加了一些新的东西,然后在构建 Flutter 应用程序时收到错误“由于使用已弃用的 Android v1 嵌入而导致构建失败”

所以我按照别人告诉我的那样创建了一个新项目,并删除了新项目中的所有旧文件,同时检查我是否没有将代码拖到新项目中,从而杀死了 v1/v2 的东西。稍后修复一些错误,我现在正处于一个阶段,我的 VS 代码不会向我尖叫 1k 错误,但现在我无法运行或构建它......

我现在得到:

PS C:\Users\Bassi\Documents\VMP lutter_application_1 erpfly> flutter build apk --debug

lib/main.dart:错误:读取“lib/main.dart”时出错:Das System kann den angegebenen Pfad nicht finden。

翻译:找不到数据

目标 kernel_snapshot_program 失败:异常

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务“:app:compileFlutterBuildDebug”执行失败。

> 处理'命令'C:\Users\Bassi\Documents\VMP lutter in lutter.bat''以非零退出值1完成

  • 尝试:

> 使用 --stacktrace 选项运行以获取堆栈跟踪。

> 使用 --info 或 --debug 选项运行以获得更多日志输出。

> 使用 --scan 运行以获得完整的见解。

> 在 https://help.gradle.org 获取更多帮助。

运行 Gradle 任务“assembleDebug”2 秒内构建失败...
3,6s Gradle 任务 assembleDebug 失败,退出代码为 1

但它就在那里:项目结构

我已经尝试为 Flutter 和/或 Dart 添加 20 个不同的启动选项,并直接通往

main.dart
,但没有任何效果。我已经筋疲力尽了。

运行代码:PS

C:\Users\Bassi\Documents\VMP lutter_application_1 erpfly> 文件是 在: C:\Users\Bassi\Documents\VMP lutter_application_1 erpfly\lib\main.dart

对我猜的每一个新想法都开放?

编辑_1: 经过一些更改后,我现在得到:

PS C:\Users\Bassi\Documents\VMP\flutter_application_1\verpfly> flutter build apk

lib/main.dart: Error: Error when reading 'lib/main.dart': Das System kann den angegebenen Pfad nicht finden.

package:Verpfly/main.dart: Error: No 'main' method found.
Try adding a method named 'main' to your program.
Target kernel_snapshot_program failed: Exception

这是我的 main.dart:

// lib/main.dart

import 'package:flutter/material.dart';
import 'licenses/custom_license.dart'; // Importiere die benutzerdefinierten Lizenzen
import 'package:hive_flutter/hive_flutter.dart';
import 'models/entry.dart';
import 'models/settings.dart';
import 'pages/home_page.dart';
import 'pages/entries_page.dart';
import 'pages/edit_entry_page.dart';
import 'pages/settings_page.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter_exit_app/flutter_exit_app.dart';
import 'package:intl/intl.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'utils/constants.dart'; // Hinzugefügt
import 'package:package_info_plus/package_info_plus.dart'; // Für App-Versionierung
import 'package:google_mobile_ads/google_mobile_ads.dart';


void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize(); // AdMob SDK initialisieren

  // Hive initialisieren
  await Hive.initFlutter();

  // Adapter registrieren
  Hive.registerAdapter(EntryAdapter());
  Hive.registerAdapter(SettingsAdapter());

  await Hive.openBox<Entry>('entries');
  await Hive.openBox<Settings>('settings');

  // Versionsprüfung und Migration
  await checkAndMigrateDatabase();

  registerCustomLicense(); // Registriere die benutzerdefinierten Lizenzen

  runApp(const MyApp());
}

Future<void> checkAndMigrateDatabase() async {
  final settingsBox = Hive.box<Settings>('settings');
  Settings? settings = settingsBox.get('settings');

  int storedDbVersion = settings?.dbVersion ?? 0;
  int currentDbVersion = Constants.currentDbVersion;

  if (storedDbVersion < currentDbVersion) {
    // Migration erforderlich
    await migrateDatabase(fromVersion: storedDbVersion, toVersion: currentDbVersion);

    // Aktualisiere die gespeicherte Datenbankversion
    if (settings != null) {
      settings.dbVersion = currentDbVersion;
      await settings.save();
    } else {
      // Falls keine Einstellungen vorhanden sind, erstelle neue
      settings = Settings(
        ownerName: settings?.ownerName ?? '',
        companyName: settings?.companyName ?? '',
        dbVersion: currentDbVersion,
      );
      await settingsBox.put('settings', settings);
    }
  }
}

Future<void> migrateDatabase({required int fromVersion, required int toVersion}) async {
  for (int version = fromVersion + 1; version <= toVersion; version++) {
    switch (version) {
      case 1:
        await migrateToVersion1();
        break;
      // Weitere Migrationen hier hinzufügen
      default:
        throw Exception('Unbekannte Datenbankversion: $version');
    }
  }
}

Future<void> migrateToVersion1() async {
  var entriesBox = Hive.box<Entry>('entries');
  for (int i = 0; i < entriesBox.length; i++) {
    Entry? entry = entriesBox.getAt(i);
    if (entry != null) {
      entry.breakfastsProvided = entry.breakfastsProvided ?? 0;
      entry.lunchesProvided = entry.lunchesProvided ?? 0;
      entry.dinnersProvided = entry.dinnersProvided ?? 0;
      await entry.save();
    }
  }
}


class MyApp extends StatelessWidget {
  const MyApp({super.key}); // const-Konstruktor hinzugefügt

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'verpfly',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      // Lokalisierung hinzugefügt
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: [
        const Locale('de'), // Deutsch
      ],
      home: HomePage(),
      routes: {
        '/entries': (context) => EntriesPage(),
        '/settings': (context) => SettingsPage(),
      },
    );
  }
}

class DatabaseErrorApp extends StatelessWidget {
  const DatabaseErrorApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DatabaseErrorPage(),
    );
  }
}

class DatabaseErrorPage extends StatelessWidget {
  const DatabaseErrorPage({super.key});

  void _handleUserChoice(BuildContext context, bool deleteDb) async {
    if (deleteDb) {
      // Löschen der bestehenden Datenbank
      await Hive.deleteBoxFromDisk('entries');
      await Hive.deleteBoxFromDisk('settings');
      // Starten der App neu
      Navigator.of(context).pushReplacement(
        MaterialPageRoute(builder: (context) => MyApp()),
      );
    } else {
      // App schließen
      FlutterExitApp.exitApp();
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Datenbankfehler'),
      ),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                'Die bestehende Datenbank ist beschädigt oder entspricht nicht den aktuellen Anforderungen.',
                textAlign: TextAlign.center,
                style: TextStyle(fontSize: 18),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () => _handleUserChoice(context, true),
                child: Text('Datenbank löschen und neu erstellen'),
              ),
              SizedBox(height: 10),
              ElevatedButton(
                onPressed: () => _handleUserChoice(context, false),
                style: ElevatedButton.styleFrom(
                  backgroundColor: Colors.red,
                ),
                child: Text('App schließen'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
flutter
1个回答
0
投票

我猜问题出在 vscode 配置上。由于使用vscode来运行flutter,因此需要为flutter项目配置vscode。通常这个配置是由 vscode 自动生成的,我不知道为什么你的不是。因此,要手动添加配置,请按照以下步骤操作:

  1. 通过 Shift + Command + P (Mac) /
    Ctrl + Shift + P
    (Windows/Linux) / 应用程序菜单 > 查看 > 命令面板
     在 vscode 中打开 
    命令面板
  2. 输入“添加配置”,然后输入。
  3. 添加最小配置,如下所示:
{
    "configurations": [
        {
            "name": "verpfly",
            "request": "launch",
            "type": "dart",
            "program": "lib/main.dart"
        }
    ]
}

如果您想查看更多属性检查启动配置

  1. 然后保存,并尝试
    flutter run
    flutter run -t lib/main.dart

您的配置设置应在

.vscode
文件夹中可用

© www.soinside.com 2019 - 2024. All rights reserved.