gpt4 book ai didi

android - Flutter SnackBar 未显示

转载 作者:行者123 更新时间:2023-12-04 23:51:49 30 4
gpt4 key购买 nike

我已经实现了表单提交的功能。我希望在提交后有 SnackBar 警报。我已经尝试过,但它不起作用。在我添加 SnackBar 路由后也不起作用。

addTicket() async {
if (_formKey.currentState.validate()) {
_formKey.currentState.save();

try{
DocumentReference ref = await db.collection('CostalLineTicketDetails').
document(ticketCato).collection("Tickets").add(
{
'startStation':startStation,
'endStation':endStation,
'price':price,
'ticketType':ticketCato,
'contactNo':contactNo,
'dateTime':dateTime,
});
setState(() => id = ref.documentID);
Navigator.push(context, new MaterialPageRoute(builder: (context) => CostalLine()));

Scaffold.of(context).showSnackBar(SnackBar(content: Text('Ticket Added Sucessfully')));

}catch(e){
print(e);
}
}

}
}

最佳答案

  • 您不能显示 showSnackBar转到另一个屏幕后在同一页面上。
  • 您可以声明_scaffoldKey 并像这样将其传递给脚手架
  • final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

    Scaffold(
    key: _scaffoldKey,
    然后像这样打开 snackbar
    _scaffoldKey.currentState.showSnackBar(SnackBar(
    content: Text(
    'Welcome',
    ),
    duration: Duration(seconds: 2),
    ));
    输出:
    enter image description here

    编辑
    您也可以使用 flash不需要通过的地方 _scaffoldKey每次。
    例子:
       void _showBasicsFlash({
    Duration? duration,
    flashStyle = FlashBehavior.floating,
    }) {
    showFlash(
    context: context,
    duration: duration,
    builder: (context, controller) {
    return Flash(
    controller: controller,
    behavior: flashStyle,
    position: FlashPosition.bottom,
    boxShadows: kElevationToShadow[4],
    horizontalDismissDirection: HorizontalDismissDirection.horizontal,
    child: FlashBar(
    content: Text('This is a basic flash'),
    ),
    );
    },
    );
    }

    关于android - Flutter SnackBar 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59189547/

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