Создан ненужный объект, занимающий трепетание памяти - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть приложение, в котором я установил пакет qr_flutter для рендеринга кода qr. Мое приложение попадает на экран входа в систему при загрузке, и я не использовал там ничего, связанного с кодом QR. Когда я открываю DevTools и делаю снимок в представлении памяти, я вижу, что какой-то объект был создан и занимает память, которая связана с пакетом qr_flutter.

FinderPatternPosition
QrCodeElement
QrValidationStatus

В пакете qr_flutter есть Enums. Подробнее о пакете https://pub.dev/documentation/qr_flutter/latest/qr_flutter/qr_flutter-library.html

Snapshot of memory just after application opened and login page displayed

Вопрос в том, почему создаются эти объекты? Так работают пакеты после установки во флаттере.

1 Ответ

0 голосов
/ 28 апреля 2020

Да. эти Enums определены в types.dart. Вы можете ссылаться на исходный код

и paint_cache.dart, используя эти Enums https://github.com/lukef/qr.flutter/blob/master/lib/src/paint_cache.dart

QrValidationStatus, определенные в https://github.com/lukef/qr.flutter/blob/master/lib/src/validator.dart

/// The status of the QR code data you requested to be validated.
enum QrValidationStatus {
  /// The QR code data is valid for the provided parameters.
  valid,

  /// The QR code data is too long for the provided version + error check
  /// configuration or too long to be contained in a QR code.
  contentTooLong,

  /// An unknown / unexpected error occurred when we tried to validate the QR
  /// code data.
  error,
}

FinderPatternPosition и QrCodeElement, определенные в https://github.com/lukef/qr.flutter/blob/master/lib/src/types.dart

/*
 * QR.Flutter
 * Copyright (c) 2019 the QR.Flutter authors.
 * See LICENSE for distribution and usage details.
 */

import 'dart:ui';

import 'package:flutter/widgets.dart';

/// Represents a specific element / part of a QR code. This is used to isolate
/// the different parts so that we can style and modify specific parts
/// independently.
enum QrCodeElement {
  /// The 'stroke' / outer square of the QR code finder pattern element.
  finderPatternOuter,

  /// The inner/in-between square of the QR code finder pattern element.
  finderPatternInner,

  /// The "dot" square of the QR code finder pattern element.
  finderPatternDot,

  /// The individual pixels of the QR code
  codePixel,

  /// The "empty" pixels of the QR code
  codePixelEmpty,
}

/// Enumeration representing the three finder pattern (square 'eye') locations.
enum FinderPatternPosition {
  /// The top left position.
  topLeft,

  /// The top right position.
  topRight,

  /// The bottom left position.
  bottomLeft,
}

/// Styling options for any embedded image overlay
class QrEmbeddedImageStyle {
  /// Create a new set of styling options.
  QrEmbeddedImageStyle({
    this.size,
    this.color,
  });

  /// The size of the image. If one dimension is zero then the other dimension
  /// will be used to scale the zero dimension based on the original image
  /// size.
  Size size;

  /// Color to tint the image.
  Color color;

  /// Check to see if the style object has a non-null, non-zero size.
  bool get hasDefinedSize => size != null && size.longestSide > 0;

  @override
  int get hashCode => size.hashCode ^ color.hashCode;

  @override
  bool operator ==(Object other) {
    if (other is QrEmbeddedImageStyle) {
      return size == other.size && color == other.color;
    }
    return false;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...