// Copyright 2014 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. /// A constant that is true if the application was compiled in release mode. /// /// More specifically, this is a constant that is true if the application was /// compiled in Dart with the '-Ddart.vm.product=true' flag. /// /// Since this is a const value, it can be used to indicate to the compiler that /// a particular block of code will not be executed in release mode, and hence /// can be removed. /// /// Generally it is better to use [kDebugMode] or `assert` to gate code, since /// using [kReleaseMode] will introduce differences between release and profile /// builds, which makes performance testing less representative. /// /// See also: /// /// * [kDebugMode], which is true in debug builds. /// * [kProfileMode], which is true in profile builds. const bool kReleaseMode = bool.fromEnvironment('dart.vm.product', defaultValue: false); /// A constant that is true if the application was compiled in profile mode. /// /// More specifically, this is a constant that is true if the application was /// compiled in Dart with the '-Ddart.vm.profile=true' flag. /// /// Since this is a const value, it can be used to indicate to the compiler that /// a particular block of code will not be executed in profile mode, an hence /// can be removed. /// /// See also: /// /// * [kDebugMode], which is true in debug builds. /// * [kReleaseMode], which is true in release builds. const bool kProfileMode = bool.fromEnvironment('dart.vm.profile', defaultValue: false); /// A constant that is true if the application was compiled in debug mode. /// /// More specifically, this is a constant that is true if the application was /// not compiled with '-Ddart.vm.product=true' and '-Ddart.vm.profile=true'. /// /// Since this is a const value, it can be used to indicate to the compiler that /// a particular block of code will not be executed in debug mode, and hence /// can be removed. /// /// An alternative strategy is to use asserts, as in: /// /// ```dart /// assert(() { /// // ...debug-only code here... /// return true; /// }()); /// ``` /// /// See also: /// /// * [kReleaseMode], which is true in release builds. /// * [kProfileMode], which is true in profile builds. const bool kDebugMode = !kReleaseMode && !kProfileMode; /// The epsilon of tolerable double precision error. /// /// This is used in various places in the framework to allow for floating point /// precision loss in calculations. Differences below this threshold are safe to /// disregard. const double precisionErrorTolerance = 1e-10; /// A constant that is true if the application was compiled to run on the web. /// /// This implementation takes advantage of the fact that JavaScript does not /// support integers. In this environment, Dart's doubles and ints are /// backed by the same kind of object. Thus a double `0.0` is identical /// to an integer `0`. This is not true for Dart code running in AOT or on the /// VM. const bool kIsWeb = identical(0, 0.0);