问题描述
较新的 Flutter 版本改变了零食栏的处理方式 (link to Flutter.dev documentation)。
我正在更新代码,而不是 100% 确定只需进行简单的更改即可。
旧代码摘录,在任何更改之前:
@override
Widget build(BuildContext context) {
return BlocConsumer<FeedBloc,FeedState>(
listener: (context,state) {
if (state.status == FeedStatus.error) {
showDialog(
context: context,builder: (context) => ErrorDialog(content: state.failure.message),);
} else if (state.status == FeedStatus.paginating) {
Scaffold.of(context).showSnackBar(
SnackBar(
backgroundColor: Theme.of(context).primaryColor,duration: const Duration(seconds: 1),content: const Text('Fetching More Posts...'),),);
}
},builder: (context,state) {
return Scaffold(
appBar: AppBar(
title: const Text('Howdy'),actions: [
if (state.posts.isEmpty && state.status == FeedStatus.loaded)
IconButton(
icon: const Icon(Icons.refresh),onpressed: () =>
context.read<FeedBloc>().add(FeedFetchPosts()),)
],body: _buildBody(state),);
},);
}
更新代码摘录(将Scaffold.of(context).showSnackBar(
更改为ScaffoldMessenger.of(context).showSnackBar(
:
@override
Widget build(BuildContext context) {
return BlocConsumer<FeedBloc,FeedState>(
listener: (context,state) {
if (state.status == FeedStatus.error) {
showDialog(
context: context,);
} else if (state.status == FeedStatus.paginating) {
ScaffoldMessenger.of(context).showSnackBar(
// was "Scaffold.of(context).showSnackBar(" but deprecated,per https://Flutter.dev/docs/release/breaking-changes/scaffold-messenger
SnackBar(
backgroundColor: Theme.of(context).primaryColor,);
}
},state) {
return Scaffold(
appBar: AppBar(
title: const Text('Howdy'),actions: [
if (state.posts.isEmpty && state.status == FeedStatus.loaded)
IconButton(
icon: const Icon(Icons.refresh),onpressed: () =>
context.read<FeedBloc>().add(FeedFetchPosts()),)
],);
},);
}
这样对吗?我忘记做其他事情了吗?这似乎非常简单,而且可能还不够充分,因为在文档的示例中,“......构建器不再需要提供一个新的作用域,其中包含一个在脚手架“下”的 BuildContext。”
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)