read<T extends Object> method

T read<T extends Object>({
  1. bool? onlyProvider = false,
})

onlyProvider false: read Provider first, then Global true: only read provider; null: read Global first, then Provider;

Implementation

T read<T extends Object>({bool? onlyProvider = false}) {
  if (onlyProvider == false) {
    // provider -> global
    try {
      return Provider.of<T>(this, listen: false);
    } on ProviderNotFoundException {
      return FrProvider.readDI<T>(nothrow: false)!;
    }
  } else if (onlyProvider == true) {
    return Provider.of<T>(this, listen: false);
  } else {
    final diValue = FrProvider.readDI<T>(nothrow: true);
    if (diValue != null) return diValue;

    log(
      'Waring! `read<$T>(onlyProvider=null)` read Global first, then Provider',
      name: 'FlowR',
    );
    return Provider.of<T>(this, listen: false);
  }
}