// Copyright 2024 The Flutter team. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /// Utility class to wrap result data /// /// Evaluate the result using a switch statement: /// ```dart /// switch (result) { /// case Ok(): { /// print(result.value); /// } /// case Error(): { /// print(result.error); /// } /// } /// ``` sealed class Result { const Result(); /// Creates an instance of Result containing a value factory Result.ok(T value) => Ok(value); /// Create an instance of Result containing an error factory Result.error(Exception error) => Error(error); /// Convenience method to cast to Ok Ok get asOk => this as Ok; /// Convenience method to cast to Error Error get asError => this as Error; } /// Subclass of Result for values final class Ok extends Result { const Ok(this.value); /// Returned value in result final T value; @override String toString() => 'Result<$T>.ok($value)'; } /// Subclass of Result for errors final class Error extends Result { const Error(this.error); /// Returned error in result final Exception error; @override String toString() => 'Result<$T>.error($error)'; }