【发布时间】:2020-03-23 05:54:49
【问题描述】:
我是 Flutter 的新手,我正在尝试创建我的第一个应用程序。 在我的应用中,我为网络调用创建了一个单例类。
class NetworkUtil {
Config configuration;
Dio dio;
static NetworkUtil _instance = new NetworkUtil._internal();
NetworkUtil._internal();
factory NetworkUtil(Config config){
_instance.configuration = config;
_instance.dio = new Dio();
return _instance;
}
final JsonDecoder _decoder = new JsonDecoder();
Future<dynamic> post(String url, {Map headers, body, encoding}) {
url = _instance.configuration.url+url;
return dio.post(url, data: body).then((response) {
final String res = response.data;
return res;
}).catchError((e){
if(e.response.data.containsKey("message")){
//I Need to dispatch event in blocClass
final _classBloc = BlocProvider.of<classBloc>(context); //I haven't context here
_classBloc .dispatch(ErrorMessage(message: e.response.data["message"]));
}else{
throw new Exception("System Error");
}
});
}
}
我的问题是我没有上下文,所以我无法在 Bloc 中调度事件。
我一直在考虑将上下文作为参数传递,但我不知道这是否是一个不好的做法,在 Android 框架上是非常糟糕的实践将上下文作为参数传递,我不知道在 Flutter 中。
是否可以使用 BlocProvider outisde 小部件?
【问题讨论】: