- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Bloc 模式构建我的 Flutter 应用程序并遇到以下问题:
使用 BlocBuilder(),我无法在按下按钮后从页面 A 正确导航到页面 B,它将推送到页面 B 并永远循环。
使用 BlocListener(),我可以在第一次按下我的按钮时导航,不能在其他按下时再次这样做。
如何正确导航?
我的代码:
class PageA extends StatelessWidget {
Movies movie;
double scale;
MovieBLoc _movieBLoc;
MovieItem({@required this.movie, this.scale});
BuildContext context;
@override
Widget build(BuildContext context) {
_movieBLoc = MovieBLoc();
this.context = context;
return BlocProvider<MovieBLoc>(
create: (context) => _movieBLoc,
child: BlocBuilder<MovieBLoc, MovieState>(
builder: (context, movieState) {
if (movieState is MovieNavigation) _onGoingToDetail();
return _itemPageView(scale, movie);
},
),
);
}
Widget _itemPageView(double scale, Movies movie) {
return LayoutBuilder(
builder: (context, constraint) {
return Align(
alignment: FractionalOffset.center,
child: Stack(
children: <Widget>[
_movieBackground(constraint, scale, movie),
_filter(constraint, scale),
_movieInfo(constraint, scale, movie),
],
),
);
},
);
}
Widget _movieInfo(BoxConstraints constraint, double scale, Movies movie) {
return Container(
width: double.infinity,
height: ((constraint.maxHeight / 100) * 65) / scale,
margin: EdgeInsets.only(left: 15, right: 15),
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
/* ... code ... */
Expanded(
flex: 2,
child: Container(
margin: EdgeInsets.fromLTRB(0, 0, 0, 0),
child: RaisedButton(
// CLick on my button and navigate to page B
onPressed: () {
_movieBLoc.add(MoviePressed(movie: movie));
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(15))),
color: Colors.orange,
child: FittedBox(
fit: BoxFit.cover,
child: Text(
AppString.bookButtonValue,
style: TextStyle(
color: AppTheme.onSurface, fontSize: 20),
),
),
),
))
],
)
],
),
);
}
_onGoingToDetail() {
WidgetsBinding.instance.addPostFrameCallback((_) {
Navigator.of(context).pushNamed(RounterNames.pageB,
arguments: MovieDetailArgs(movie: movie));
});
}
/* ... code ... */
}
最佳答案
Bloc 包裹有不同收据的文件。
https://bloclibrary.dev/#/recipesflutternavigation?id=recipes-navigation
您肯定需要使用 BlocListener。还请注意将 Equitable 用于您的事件和状态。
因为如果当前状态为“NavigateState”并且您再次发送“NavigationState”的新实例,则下一个状态可能相同并且可以被忽略
关于android - 如何使用 BLocBuilder() 导航 - Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59137990/
我的 Flutter 应用程序有多个 BloC(通过 bloc 和 flutter_bloc 包),这导致了一些我使用变通方法解决的技术困难,但我想知道是否有是更好的解决方案。 我正在使用 BlocB
我想将文本 Update BlocBuilder 嵌套在另一个 BlocBuilder 中,该 BlocBuilder 通过 slider 小部件控制其字体大小。但是,我无法让它工作。请帮忙! Blo
当我的 Bloc 处于特定状态时,我正在尝试导航到新页面。但是,现在每当我尝试这样做时,我都会收到以下错误: I/flutter (25673): 抛出另一个异常:在构建期间调用了 setState(
我有一个 BlocBuilder,它允许我构建一个元素列表。所考虑的 BlocBuilder Bloc 的状态为 List要显示的元素。 现在我想使用相同的 BlocBuilder,但使用不同的 Bl
更新找到 onChange 覆盖方法后,似乎没有发出更新的状态#confused 更新 2 进一步调试显示,当更新状态尝试发出时,StreamController 似乎已关闭。 出于某种原因,我的应用
我正在使用 Bloc 模式构建我的 Flutter 应用程序并遇到以下问题: 使用 BlocBuilder(),我无法在按下按钮后从页面 A 正确导航到页面 B,它将推送到页面 B 并永远循环。 使用
BlocBuilder flutter_bloc是将页面的所有状态放在一起。 pulling a list 有两个数据(isPullingState, dataList),当dataList 没有改变
我正在使用 flutter_bloc 进行状态管理并解决了这个问题。更新字段并保存它时,BlocBuilder 不会刷新页面。添加或删除时它工作正常。我不确定我在这里做错了什么。 即使我转到另一个屏幕
假设我在 BlocProviderTree 中有 3 个 BLoC,这意味着这些 bloc 可用于该类。其中一个用作 BlocListener,现在我希望将其他两个 BLoC 用作 BlocBuild
我是一名优秀的程序员,十分优秀!