Как отключить все журналы [debugPrint()] в сборке релиза во флаттере?

Я установил apk для сборки релиза на устройстве Android, но если я подключу это устройство к Android studio, то смогу увидеть все операторы Logs/debugPrint.

Есть ли способ отключить все логи?

3 ответа

Я объединил принятый ответ с идеей отсюда и использовал его main.dart, чтобы везде отключить debugPrint.

const bool isProduction = bool.fromEnvironment('dart.vm.product');
void main() {
  if (isProduction) {      
      debugPrint = (String message, {int wrapWidth}) {};    
  } 
  runApp(
    MyApp()
  );
}

Вы можете назначить фиктивную функцию глобальной debugPrint переменная:

import 'package:flutter/material.dart';

main() {
  debugPrint = (String message, {int wrapWidth}) {};
}

В последних версиях Flutter возврат пустой функции не работает. Возврат null не рекомендуется, и его следует избегать — если он используется, он помечается тегом, что функции void не должны возвращать null. Вместо этого пустая строка не вызовет никаких проблем и работает отлично:

      main() {
  debugPrint = (String? message, {int? wrapWidth}) => '';
}
Другие вопросы по тегам