gpt4 book ai didi

dart - 将 pushNamed 与 Dismissible Widget 结合使用

转载 作者:IT王子 更新时间:2023-10-29 06:58:59 27 4
gpt4 key购买 nike

我正在尝试创建一个 Dismissible 小部件,但我想要路由器历史记录,我的意思是当我使用 onDismissed 事件转到另一条路线时,当用户在该新 View 上按下后退按钮时将返回到第一个 View 。

这是我的小部件。

Dismissible(
key: new ValueKey("dismiss_key"),
direction: DismissDirection.horizontal,
child: Container(child: this.getTopPlacesSubscription()),
onDismissed: (direction) {
if (direction == DismissDirection.endToStart) {
Navigator.of(context).pushNamed(Router.getRoute(Routes.map));
}
if (direction == DismissDirection.startToEnd) {
Navigator.of(context)
.pushNamed(Router.getRoute(Routes.camera));
}
}

我将不胜感激任何帮助。我在尝试以这种方式执行此操作时遇到了问题。

最佳答案

此代码块可让您根据长度创建随机字符串。将此添加到您的代码中。

import 'dart:math';

String _randomString(int length) {
var rand = new Random();
var codeUnits = new List.generate(
length,
(index){
return rand.nextInt(33)+89;
}
);

return new String.fromCharCodes(codeUnits);
}

在你的状态下,定义一个新变量并给它一个随机值。

String vk;

@override
void initState() {
this.vk = _randomString(10)
}

然后转到您的 Dismissable 小部件并将 vk 替换为您的字符串。神奇的部分来了,哈哈。您必须在 onDismissed 中更改您的 vk 值。这会将一个新值传递给 Dismissable 键,因此 Flutter 会将其识别为一个新的 Widget,从而防止错误。

Dismissible(
key: new ValueKey(vk),
direction: DismissDirection.horizontal,
child: Container(child: this.getTopPlacesSubscription()),
onDismissed: (direction) {
setState(() {
this.vk = _randomString(10);
});
if (direction == DismissDirection.endToStart) {
Navigator.of(context).pushNamed(Router.getRoute(Routes.map));
}
if (direction == DismissDirection.startToEnd) {
Navigator.of(context)
.pushNamed(Router.getRoute(Routes.camera));
}
}

关于dart - 将 pushNamed 与 Dismissible Widget 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54138473/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com