| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| part of dart.ui; | |
| /// Annotation to keep [Object.toString] overrides as-is instead of removing | |
| /// them for size optimization purposes. | |
| /// | |
| /// For certain uris (currently `dart:ui` and `package:flutter`) the Dart | |
| /// compiler will remove [Object.toString] overrides from classes in | |
| /// profile/release mode to reduce code size. | |
| /// | |
| /// Individual classes can opt out of this behavior via the following | |
| /// annotations: | |
| /// | |
| /// * `@pragma('flutter:keep-to-string')` | |
| /// * `@pragma('flutter:keep-to-string-in-subtypes')` | |
| /// | |
| /// See https://github.com/dart-lang/sdk/blob/main/runtime/docs/pragmas.md | |
| /// | |
| /// For example, in the following class the `toString` method will remain as | |
| /// `return _buffer.toString();`, even if the `--delete-tostring-package-uri` | |
| /// option would otherwise apply and replace it with `return super.toString()`. | |
| /// (By convention, `dart:ui` is usually imported `as ui`, hence the prefix.) | |
| /// | |
| /// ```dart | |
| /// class MyStringBuffer { | |
| /// final StringBuffer _buffer = StringBuffer(); | |
| /// | |
| /// // ... | |
| /// | |
| /// @ui.keepToString | |
| /// @override | |
| /// String toString() { | |
| /// return _buffer.toString(); | |
| /// } | |
| /// } | |
| /// ``` | |
| const pragma keepToString = pragma('flutter:keep-to-string'); |