【发布时间】:2021-01-04 03:17:36
【问题描述】:
我基本上想从视图中调用我的事件减速器。这是我的视图代码-
class HomeView extends StatelessWidget {
/// When user pressed get data button
getData() async {
print("Entering Get Data");
Builder(builder: (context) {
print("Inside the builder");
// ignore: close_sinks
final homeEventReducer = BlocProvider.of<HomeEventReducer>(context);
homeEventReducer.add(DataRequested());
return Center(
child: CircularProgressIndicator(),
);
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Home'),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
new Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
new RaisedButton(
padding: const EdgeInsets.all(8.0),
textColor: Colors.white,
color: Colors.pink,
onPressed: getData,
child: new Text("Get Data"),
),
],
),
),
);
}
}
这就是我的HomeEventReducer 代码的样子 -
Stream<HomeState> _reduceDataRequestedEventToState(
DataRequested event) async* {
yield Loading();
try {
final data = await _useCase.getData();
if (data != null) {
yield DataReceivedStatus(message: data);
} else {
yield DataReceivedError(message: "Data Retrieval Error");
}
} catch (error) {
yield DataReceivedError(message: error.message);
}
}
我有 2 个问题 -
-
在我的
HomeView内部,控制流没有进入Builder内部,即我没有得到日志print("Inside the builder"); -
HomeEventReducer 中的
DataReceivedStatus返回我需要在视图中访问的数据。我该怎么做?
我是 Flutter 的新手。任何帮助将不胜感激?
【问题讨论】: