import 'package:flutter/cupertino.dart'; @immutable class Res{ ///error info final String? errorMessage; String get errorMessageWithoutNull => errorMessage??"Unknown Error"; /// data final T? _data; /// is there an error bool get error => errorMessage!=null || _data==null; /// whether succeed bool get success => !error; /// data /// /// must be called when no error happened, or it will throw error T get data => _data ?? (throw Exception(errorMessage)); /// get data, or null if there is an error T? get dataOrNull => _data; final dynamic subData; @override String toString() => _data.toString(); Res.fromErrorRes(Res another, {this.subData}): _data=null,errorMessage=another.errorMessageWithoutNull; /// network result const Res(this._data,{this.errorMessage, this.subData}); Res.error(dynamic e):errorMessage=e.toString(), _data=null, subData=null; }