【问题标题】:Change AppBar title value on carousel change without setstate在没有 setstate 的情况下更改轮播更改的 AppBar 标题值
【发布时间】:2021-12-29 08:13:26
【问题描述】:

我正在开发一个类似于 whatsapps 照片库的图库应用。当我的轮播滑块更改时,我希望应用栏标题更改。我使用 setstate 进行了尝试,但是因为我在显示对话框中显示了 carouselslider,所以它不起作用,我认为这可能会导致性能问题。我在项目中使用getx,没有setstate有什么办法吗?

这是我的 AppBar 小部件

  showGeneralDialog(
                        context: context,
                        barrierDismissible: true,
                        barrierLabel: MaterialLocalizations.of(context)
                            .modalBarrierDismissLabel,
                        barrierColor: Colors.black45,
                        transitionDuration:
                            const Duration(milliseconds: 200),
                        pageBuilder: (BuildContext buildContext,
                            Animation animation,
                            Animation secondaryAnimation) {
                          return Dismissible(
                            direction: DismissDirection.vertical,
                            key: const Key('key'),
                            onDismissed: (_) => Navigator.of(context).pop(),
                            child: Scaffold(
                              appBar: AppBar(title: Text(photoSender)),

而且脚手架的主体是一个carouselsliderbuilder,所以当轮播发生变化时,我希望photoSender变量发生变化。

有什么办法吗?

【问题讨论】:

  • 您尝试过使用Obx 小部件吗??我认为您可以使用obs 作为字符串变量,最后使用Text() 小部件包装Obx

标签: flutter dart flutter-getx


【解决方案1】:
  1. photoSender 变量声明为Rx<String>

    final photoSender = Rx<String>("");
    
  2. Obx/GetX 包裹你的Text 小部件:

    appBar: AppBar(title: Obx(()=>Text(photoSender.value))),
    

每当您的photoSender 变量的值发生变化时,它都会自动更新您应用栏中的文本。

更新值:

photoSender.value = "John";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 2021-06-13
    • 2013-02-27
    相关资源
    最近更新 更多