android Flutter dart调试器断点停止工作

g2ieeal7  于 2022-11-03  发布在  Android
关注(0)|答案(7)|浏览(260)

我正在学习Dart和Flutter,并在Android Studio 3.1.2下开发一个小型Android Flutter应用。突然,调试器断点停止工作--在调试模式下启动的应用从未在断点处停止,指示断点的红点变成了内含x的红点。在我的应用中,它们仍然工作的唯一位置是主.dart模块。
我清理了这个项目很多次,在两个不同的设备上测试,完全卸载了我的Flutter调试应用程序,然后开始新的--没有任何帮助。在beta(当前beta 2)通道上更新Flutter没有任何帮助。也尝试切换到dev和master通道--没有帮助。
有没有人遇到过类似的情况,是怎么处理的呢?
编辑,添加mail.dart和flutter doctor的输出(目前在master分支上,但切换到beta或dev分支后也有同样的问题):
从main.dart导入,最好是从所有main.dart导入:

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

import 'app_strings.dart';
import 'net_libs_page/net_libs_page.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: [
        // ... app-specific localization delegate[s] here
        AppLocalizationsDelegate(),
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        //FallbackMaterialLocalisationsDelegate(),
      ],
      supportedLocales: [
        Locale('en', 'US'), // English
        Locale('es', 'ES'), // Spanish
        Locale('pl', 'PL'),
        // ... other locales the app supports
      ],
      title: '@Voice Network Library', //_strings.title,
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or press Run > Flutter Hot Reload in IntelliJ). Notice that the
        // counter didn't reset back to zero; the application is not restarted.
        primarySwatch: Colors.indigo,
      ),
      home: NetLibsPage(),
    );
  }
}

Flutter医生输出:

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel master, v0.4.5-pre.52, on Microsoft Windows [Version 10.0.16299.431], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[√] Android Studio (version 3.1)
[!] IntelliJ IDEA Ultimate Edition (version 2018.1)
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
[!] VS Code, 32-bit edition (version 1.19.3)
[√] Connected devices (1 available)

! Doctor found issues in 2 categories.
soat7uwm

soat7uwm1#

lib/main.dart中不使用相对导入

import 'app_strings.dart';
import 'net_libs_page/net_libs_page.dart';

而是使用了

import 'package:my_app/app_strings.dart';
import 'package:my_app/net_libs_page/net_libs_page.dart';

其中,my_appname:字段中pubspec.yaml的内容。
追踪此项目的问题https://github.com/dart-lang/sdk/issues/33076

mklgxw1f

mklgxw1f2#

导入路径中路径的大写似乎会导致断点停止工作。即:

package:myApp/model/myWidget/myWidget.dart

package:myApp/model/MyWidget/MyWidget.dart

对于调试来说是不一样的。有趣的是,应用程序启动时没有任何路径大写不正确的问题。

pqwbnv8z

pqwbnv8z3#

对于那些在VS代码上使用flutter的人来说,
请查看您对dart文件名所做的更改。
我在VS代码上也遇到了同样的问题。它没有显示编译错误,工作正常,但断点不起作用。
当我正在经历我所做的更改,我看了几个dart文件,我改变了。
例如,我将“Home.dart”更改为“home.dart”,等等。
即使更改了文件名,VS代码有时也不会反映更改,
这意味着即使你把Home.dart改成了Home.dart,
左侧面板显示home.dart,而右侧面板显示您打开的文件,仍然显示“home.dart”
下面的图片解释了我刚才所说的一切。

解决方案是简单地关闭你打开的所有dart文件,关闭VS代码,然后重新打开它。这对我很有效。

2uluyalo

2uluyalo4#

在我的例子中,Flutter Doctor没有发现任何错误。在花了一些时间试图解决它之后,Android Studio向我显示了一条更新Dart和插件的正常消息。更新后,它足以重新启动Android Studio,瞧,它完美地工作了。

zwghvu4y

zwghvu4y5#

只是遇到了同样的问题,flutter调试器从来没有停止在断点。这发生在我原来的模拟器损坏,并重新创建了一个新的模拟器。
对我有效的解决方案很简单。

delete all breakpoints, watchlist
close the vscode
flutter clean
restart vscode

如何调试这个问题,如果以上不为您工作?
1.请参考此github问题。复制并粘贴以下内容以方便参考

- Created a new project using the Flutter: New Project command
- Added the following code to lib/main.dart

class TestClass {
  void foo() {
    print('foo');
  }
}

- Added a breakpoint to the print line
- Added the following code to the top of the test/widget_test.dart file in the existing test

TestClass().foo();

- Clicked the Debug link above the test

如果上述情况正常,则表示项目中存在导致调试器无法正常工作的特定问题。
1.利用web浏览器中的devTool,使用它附带的调试器工具设置断点,看看它是否有效。
1.使用dart编程断点

import 'dart:developer';

yourFunc() {
  // ...
  debugger();
}

从那里你可能会得到一些解决这个问题的想法。祝你好运。

omtl5h9j

omtl5h9j6#

原因是您使用Powershell和VS代码时收到以下警告:“打开工作区的外壳......”
假设您有一个名为MY_APP的文件夹,但您从PowerShell将应用加载到文件夹my_app中,调试将无法工作,因为您希望该文件夹命名为MY_APP。
对我来说,我只是改变了外壳在Powershell和调试是工作了。

jrcvhitl

jrcvhitl7#

适用于我的解决方案:

简单地
卸载Flutter应用程序
从真实的设备(在设备上手动)调试,然后再次尝试调试(!)

相关问题