Open VVennn opened 2 years ago
flutter framework不允许在initstate期间重新刷新试图,如果希望完成init后马上进行一些试图变更,建议使用future.delay(duration.zero,()=>xxx)把事件加入到异步队列,在initstate之后由虚拟机调度执行。
flutter framework不允许在initstate期间重新刷新试图,如果希望完成init后马上进行一些试图变更,建议使用future.delay(duration.zero,()=>xxx)把事件加入到异步队列,在initstate之后由虚拟机调度执行。
这并非是马上进行视图变更,而是我点击触发的,与队列无关吧。并且即使我alert弹窗添加到异步队列中仍有此问题。 当我使用navigator2.0的delegate初始化route后,以route.navigator跳转并不会出现该问题,但是我boost并没有可以初始化的地方,请问我该如何处理这种情况?
flutter framework不允许在initstate期间重新刷新试图,如果希望完成init后马上进行一些试图变更,建议使用future.delay(duration.zero,()=>xxx)把事件加入到异步队列,在initstate之后由虚拟机调度执行。
这并非是马上进行视图变更,而是我点击触发的,与队列无关吧。并且即使我alert弹窗添加到异步队列中仍有此问题。� 当我使用navigator2.0的delegate初始化route后,以route.navigator跳转并不会出现该问题,但是我boost并没有可以初始化的地方,请问我该如何处理这种情况?
可以麻烦展示详细的demo吗?
flutter framework不允许在initstate期间重新刷新试图,如果希望完成init后马上进行一些试图变更,建议使用future.delay(duration.zero,()=>xxx)把事件加入到异步队列,在initstate之后由虚拟机调度执行。
这并非是马上进行视图变更,而是我点击触发的,与队列无关吧。并且即使我alert弹窗添加到异步队列中仍有此问题。� 当我使用navigator2.0的delegate初始化route后,以route.navigator跳转并不会出现该问题,但是我boost并没有可以初始化的地方,请问我该如何处理这种情况?
可以麻烦展示详细的demo吗?
麻烦留个邮箱可以吗?我这边demo提示无法上传
flutter framework不允许在initstate期间重新刷新试图,如果希望完成init后马上进行一些试图变更,建议使用future.delay(duration.zero,()=>xxx)把事件加入到异步队列,在initstate之后由虚拟机调度执行。
这并非是马上进行视图变更,而是我点击触发的,与队列无关吧。并且即使我alert弹窗添加到异步队列中仍有此问题。� 当我使用navigator2.0的delegate初始化route后,以route.navigator跳转并不会出现该问题,但是我boost并没有可以初始化的地方,请问我该如何处理这种情况?
可以麻烦展示详细的demo吗?
我这边就是下载了官方的demo,然后通过本地集成的方式pod到demo项目中。对官网demo的更改仅在FirstRouteWidget
的Column中添加了如下widget
GestureDetector(
child: Container(
color: Colors.red,
height: 100,
width: 200,
),
onTap: () {
print('taptap');
showAlert.showSheet(context);
},
onLongPress: () {
print('longPress');
showAlert.showSheet(context);
},
),
showAlert 代码如下
class showAlert {
static showSheet(BuildContext context) {
return showCupertinoModalPopup(
context: context,
builder: (BuildContext context) {
return CupertinoActionSheet(
title: Text('提示'),
message: Text('是否要删除当前项?'),
actions: <Widget>[
CupertinoActionSheetAction(
isDefaultAction: true,
child: Text('删除'),
onPressed: () {
Navigator.of(context, rootNavigator: true).pop();
},
),
CupertinoActionSheetAction(
isDestructiveAction: true,
child: Text('不删除'),
onPressed: () {
Navigator.of(context, rootNavigator: true).pop();
},
),
],
);
},
);
}
}
复现步骤:就是原生用flutterboost跳转到first
路由后,点击红色方框,关闭红色方框,返回到上个界面,再用flutterboost跳转到first
路由后就能复现
flutter版本2.x均可,flutter_boost是官方下的1.17.1
sorry之前没看到如何提issues,fork的可复现最小demo在下面链接了,麻烦2位了 @0xZOne @songyanghe666
[✓] Flutter (Channel stable, 2.5.3, on macOS 11.6.1 20G224 darwin-x64, locale zh-Hans-CN) [!] Android toolchain - develop for Android devices (Android SDK version 31.0.0) ✗ cmdline-tools component is missing Run
path/to/sdkmanager --install "cmdline-tools;latest"
See https://developer.android.com/studio/command-line for more details. ✗ Android license status unknown. Runflutter doctor --android-licenses
to accept the SDK licenses. See https://flutter.dev/docs/get-started/install/macos#android-setup for more details. [✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [✓] Android Studio (version 2020.3) [✓] VS Code (version 1.63.1) [✓] Connected device (3 available)! Doctor found issues in 1 category.
这是flutter版本,对应flutter_boost是1.17.1。 复现步骤是用boost open到一个flutter页面A,close后,再次打开页面A,点击出现弹框。我这里可以提供可复现的最小demo,如需可提供
如下是部分弹框代码: 如下是报错信息: