【问题标题】:Flutter only import library in debug modeFlutter 仅在调试模式下导入库
【发布时间】:2021-05-11 06:17:15
【问题描述】:

我正在使用 Android 11 无线调试来开发我的应用。每当设备自动锁定自身时,需要一段时间才能重新建立连接以进行热重载。

为了克服这个问题,我使用了wakelock,我只需要在我的应用处于调试模式而不是发布模式时使用它。

lib/main.dart我有以下代码:

import 'package:flutter/foundation.dart' as Foundation;
import 'package:wakelock/wakelock.dart';

...

void main() {
  if (Foundation.kDebugMode) {
    Wakelock.enable();
  }
  runApp(App());
}

如您所见,wakelock 包仅在应用程序在调试模式下运行时使用。

如果应用程序在调试模式下运行,有没有办法只导入wakelock

【问题讨论】:

  • dev 依赖项 dart 可以在 pubspec.yaml 中声明,您可以查看 documentation。我很抱歉我的不好。
  • @AbdurRohman 我已经用更多上下文更新了我的问题。遗憾的是,在这种情况下,开发依赖项不起作用,因为我将包导入 lib/main.dart
  • 所以你只需要使用唤醒锁来防止屏幕关闭吗?如果是,那为什么不更改设备的睡眠设置?

标签: flutter debugging build


【解决方案1】:

测试为

pubspec.yaml

dev_dependencies:
  wakelock: ^0.2.1+1

用法

import 'package:flutter/foundation.dart';
import 'package:wakelock/wakelock.dart';
import 'package:flutter/material.dart';

main() async {
  WidgetsFlutterBinding.ensureInitialized();

  if (kDebugMode) {
    print('activating wakelock in debug');
    Wakelock.enable();
  }

  runApp(App());
}

旁注:

如果您只需要设备在一段时间后停止自行锁定,请尝试在设备本身的 Display 设置下增加睡眠延迟,或使用开发人员选项中名为 Stay awake while charging 的设置,该设置允许设备充电时始终保持开启状态。

【讨论】:

  • 但是文档说:“如果依赖项是从您的 lib 或 bin 目录中的某些内容导入的,它需要是常规依赖项。如果它只是从测试、示例等导入,它可以并且应该是一个开发依赖。”
  • @ZEHINZ OP 想要一个解决方案,让设备在开发代码时不会进入睡眠状态。在生产模式下实际上并没有保持屏幕唤醒的意图。因此,dev_dependency 工作正常。
  • 我将 3 个 ligraries 移至开发依赖项,但在发布模式下,应用程序大小并未按预期更改。谢谢。
猜你喜欢
  • 2019-10-04
  • 1970-01-01
  • 2020-07-25
  • 2021-05-20
  • 2015-09-23
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多