目录
Get.snackbar
- Getx提供的悬浮通知组件
- 默认效果还挺不错的:
问题
- Getx官方介绍和百度上的很多文章就有提到Get.back()可以关闭这个悬浮通知
- 然而,我们普遍用Get.back()的目的是关闭当且页面,返回上一级
- 因此,当项目使用上这个悬浮通知以后,如果此时有悬浮通知显示,然后页面需要返回调用了Get.back(),则会进行不符合原本预期的效果:
- 悬浮通知被Get.back()关闭
- 当前想关闭的页面没有被关闭
- 解决方法:
- 使用以下语句代替Get.back() :
- 其中,navigator是Getx提供的一个对象,用于代替flutter原生的Navigator
navigator!.pop();
- -
- Getx对navigator部分介绍:
- 这也意味着我们如果不使用Get.back()而使用flutter自带的路由管理Navigator则可以正常关闭页面而不会关闭悬浮通知
- 有时我们还需要使用Get.back<T>(result: res)来返回数据
- 我们同样可以替换使用:
navigator!.pop<T>(result);
- 因此就可以搞一个自己的back()来代替Get.back()使用了:
class MyRoute_c {
static void back<T>({T? result}) {
navigator!.pop<T>(result);
}
}
Getx其他悬浮组件调整
正如上面所描述的问题一样,在Getx的其他悬浮组件中同样有类似的问题。
下面我们以 Get.defaultDialog() 示例问题并解决
- 如果我们执行以下代码:
Get.defaultDialog(
title: "弹窗标题",
textConfirm: "确认", // 确认按钮的文本
textCancel: "取消", // 取消按钮的文本
onConfirm:() {
print("确认按钮被按下");
Get.back();
}
);
- 运行效果:
- 当你点击确定时,执行 onConfirm 的函数,打印信息并执行Get.back(),可以把弹窗也看作是一个页面,弹窗将被这一句Get.back()关闭
- 然而,如果此时有悬浮通知Get.snackbar()正在显示:
- 那就会出问题了,按下确定后,Get.back()会关闭悬浮通知,弹窗则会继续存在
- 当然你确实可以多按几次确定,直到悬浮通知都被关闭,这时Get.back()才会正确地关闭弹窗
- 然而这也将导致 onConfirm 的代码被执行多次,如果你在里面写了网络请求之类的操作,就可能会出现多次重复的网络请求等等的问题了
- 因此,我们想关闭弹窗时,也应该使用上面我们自己实现的back(),即最终使用它来返回:
- navigator!.pop();
- 可能你已经发现,确定按钮对应了 onConfirm 的函数,但取消按钮对应的 onCancel 我们并没有传参给它,也就是说,它会执行它默认的操作:
- 查看Getx的源码,就可以发现,它执行我们传入的 onCancel ,然后执行一个Get.back()
- 然而我们并没有传 onCancel ,因此它会直接执行一个Get.back()
- 那么假如此时有悬浮通知,显然默认的取消执行的Get.back()只会关闭悬浮通知,而不会关闭弹窗
- 但如果我们直接给一个onCancel的传参 onCancel: () => navigator!.pop() 的话,它即执行了navigator!.pop(), 又会执行后面的Get.back(),如果此时没有悬浮通知,页面将返回两次
- 因此我们需要判断一下,按下取消按钮时是否又显示悬浮通知,有则执行navigator!.pop(),没有则不需要我们干事,等它执行后面Get.back()即可以关闭弹窗
onConfirm: (null != onConfirm)
? onConfirm
: () {
MyRoute_c.back();
},
onCancel: (null != onCancel)
? onCancel
: () {
if (Get.isSnackbarOpen) {
MyRoute_c.back();
}
}
- 由于源码中,onConfirm 后面并没有像 onCancel 一样带着一个Get.back(),因此需要我们自己调用我们的back() 关闭弹窗
https://finasteride.store/# cheap propecia tablets
http://ciprofloxacin.tech/# purchase cipro
http://ciprofloxacin.tech/# ciprofloxacin 500mg buy online
buying propecia without prescription: order generic propecia without rx – cheap propecia pills
cialis generic cost
buy cytotec online buy cytotec online fast delivery cytotec pills buy online
cost generic propecia without prescription: buying generic propecia without prescription – cost cheap propecia online
http://finasteride.store/# buying generic propecia online
where can i buy zithromax
metformin online without a prescription
cytotec abortion pill: purchase cytotec – buy cytotec in usa
https://finasteride.store/# buying generic propecia
metformin pill
lisinopril 5mg tab lisinopril 20 12.5 mg lisinopril 2.5 pill
where can i buy nolvadex nolvadex vs clomid tamoxifen 20 mg tablet
В нашем мире, где диплом – это начало успешной карьеры в любом направлении, многие ищут максимально быстрый и простой путь получения образования. Факт наличия документа об образовании трудно переоценить. Ведь диплом открывает дверь перед всеми, кто собирается вступить в профессиональное сообщество или продолжить обучение в высшем учебном заведении.
Предлагаем максимально быстро получить этот важный документ. Вы сможете купить диплом нового или старого образца, что становится выгодным решением для человека, который не смог завершить образование или потерял документ. Все дипломы изготавливаются аккуратно, с максимальным вниманием к мельчайшим элементам, чтобы в результате получился 100% оригинальный документ.
Преимущества этого подхода заключаются не только в том, что можно максимально быстро получить диплом. Процесс организован просто и легко, с профессиональной поддержкой. Начав от выбора нужного образца до консультации по заполнению персональных данных и доставки в любой регион страны — все будет находиться под полным контролем наших мастеров.
Для тех, кто ищет максимально быстрый способ получить необходимый документ, наша услуга предлагает выгодное решение. Приобрести диплом – это значит избежать долгого процесса обучения и не теряя времени переходить к достижению личных целей: к поступлению в ВУЗ или к началу трудовой карьеры.
https://dlplomanrussian.com
Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut
Everything is very open and very clear explanation of issues. was truly information.Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut
https://cytotec.club/# buy cytotec pills
Thank you for great content. Hello Administ. Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut
Thank you great posting about essential oil. Hello Administ . Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut
After all, what a great site and informative posts, I will upload inbound link – bookmark this web site? Regards, Reader.Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut
Good info. Lucky me I reach on your website by accident, I bookmarked it. Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut
I really love to read such an excellent article. Helpful article. Hello Administ . Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut
Great post thank you. Hello Administ . Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut
Hello! I could have sworn I’ve been to this blog before but after browsing through some of the post I realized it’s new to me.Seo Paketi Skype: By_uMuT@KRaLBenim.Com -_- live:by_umut
tadalafil 5mg best price
tamoxifen endometriosis does tamoxifen cause menopause nolvadex side effects
buy cytotec over the counter: cytotec abortion pill – buy cytotec in usa
synthroid 0.88
http://finasteride.store/# get cheap propecia without dr prescription
generic cialis online in uk
cialis brand online australia
azithromycin 500mg tablets price in india
generic valtrex sale
http://finasteride.store/# get cheap propecia without a prescription
buy synthroid canada
australia online pharmacy free shipping
Cytotec 200mcg price order cytotec online cytotec buy online usa
promo code for canadian pharmacy meds
prednisone 12 tablets price
synthroid 0.175
http://ciprofloxacin.tech/# buy cipro
http://lisinopril.network/# buy cheap lisinopril 40mg
tamoxifen chemo tamoxifen rash tamoxifen adverse effects
price of lisinopril 20 mg lisinopril 2.5 cost zestril price uk
purchase cipro: ciprofloxacin 500mg buy online – ciprofloxacin 500mg buy online
prednisone 20 mg online
buy ciprofloxacin over the counter cipro ciprofloxacin ciprofloxacin 500 mg tablet price
prednisone steroid