Flutter:将数据传递给状态
Flutter: pass data to state
我正在尝试将数据传递到启动 API 调用的 bloc,但出现错误:
"only static members can be accessed in initializers"
这可能吗?我的方法是完全错误的吗?
我也尝试将 postid
切换为静态,但不确定如何实际访问该状态下的 postid
。
代码:
class ViewPost extends StatefulWidget {
int postid; // sent from previous screen
}
ViewPost(
{Key key,
this.postid
})
: super(key: key);
}
说明我需要访问 postid:
@override
_ViewPostState createState() => _ViewPostState();
}
class _ViewPostState extends State<ViewPost> {
final int postid; // somehow I'd need to access postid here
final PostBlog _PostBloc =
PostBloc(httpClient: http.Client(), postid: postid);
}
_ViewBlogState() {
_postBloc.dispatch(Fetch());
}
建造:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.name),
backgroundColor: Colors.black,
automaticallyImplyLeading: true,
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () onPressed: () => Navigator.pop(context, true),
),
),
body: new RefreshIndicator(
child: BlocProviderTree(
blocProviders: [
PostProvider<PostBloc>(bloc: _postBloc)
],
child: BlocBuilder(
bloc: _postBloc,
builder: (BuildContext context, PostState state) {
....
}
走不同的路线并让它工作。使用了:
_postBloc.dispatch(Fetch(postid: postid));
将其发送至活动。
然后只需在事件本身中声明它,然后在进行 api 调用时就可以在 event.postid 中访问它。
我正在尝试将数据传递到启动 API 调用的 bloc,但出现错误:
"only static members can be accessed in initializers"
这可能吗?我的方法是完全错误的吗?
我也尝试将 postid
切换为静态,但不确定如何实际访问该状态下的 postid
。
代码:
class ViewPost extends StatefulWidget {
int postid; // sent from previous screen
}
ViewPost(
{Key key,
this.postid
})
: super(key: key);
}
说明我需要访问 postid:
@override
_ViewPostState createState() => _ViewPostState();
}
class _ViewPostState extends State<ViewPost> {
final int postid; // somehow I'd need to access postid here
final PostBlog _PostBloc =
PostBloc(httpClient: http.Client(), postid: postid);
}
_ViewBlogState() {
_postBloc.dispatch(Fetch());
}
建造:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.name),
backgroundColor: Colors.black,
automaticallyImplyLeading: true,
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () onPressed: () => Navigator.pop(context, true),
),
),
body: new RefreshIndicator(
child: BlocProviderTree(
blocProviders: [
PostProvider<PostBloc>(bloc: _postBloc)
],
child: BlocBuilder(
bloc: _postBloc,
builder: (BuildContext context, PostState state) {
....
}
走不同的路线并让它工作。使用了:
_postBloc.dispatch(Fetch(postid: postid));
将其发送至活动。
然后只需在事件本身中声明它,然后在进行 api 调用时就可以在 event.postid 中访问它。