![](/img/trans.png)
[英]How to use pushNamed with Dismissible Widget and see background transparent first page
[英]Use pushNamed with Dismissible Widget
我正在嘗試創建一個 Dismissible 小部件,但我想擁有路由器歷史記錄,我的意思是當我使用 onDismissed 事件轉到另一條路線時,當用戶按下該新視圖上的后退按鈕時,將返回到第一個。
這是我的小部件。
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));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.