***Error 是由我的自定义底页小部件引发的

Posted

技术标签:

【中文标题】***Error 是由我的自定义底页小部件引发的【英文标题】:***Error is thrown by my custom bottom-sheet widget 【发布时间】:2021-07-26 13:19:17 【问题描述】:

当我尝试在底页小部件上设置值时,会引发以下错误:

小部件库捕获的异常 ═══════════════════════════════════下面的***Error 被抛出构建 BSheetWidget(dirty, dependencies: [MediaQuery], 状态:_BSheetWidgetState#759dc):堆栈溢出

相关的导致错误的小部件是 BSheetWidget lib\...\client\clientscreen_view.dart:874 抛出异常时, 这是堆栈 #0 Driver.carReference 包:taxi_app/…/models/driver.dart:29 #1 Driver.carReference 包:taxi_app/…/models/driver.dart:29 #2 Driver.carReference 包:taxi_app/…/models/driver.dart:29 #3 Driver.carReference 包:taxi_app/…/models/driver.dart:29 #4 Driver.carReference 包:taxi_app/.../models/driver.dart:29 ... ══════════════════════════════════════════════════ ══════════════════════════════ 在 2987 毫秒内重新加载了 2190 个库中的 1 个。

我发现问题出在这里:

child: Container(
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.spaceAround,
                        children: [
                          Column(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: [
                              Text('vehicule model'),
                            ],
                          ),
                          Text(widget.fullData.driver.carReference != null ? widget.fullData.driver.carReference.toString() : '', style: TextStyle(color: ThemeUtils.bluePlus,fontSize: 18)), //
                        ],
                      ),
                    ),

但我发现当我尝试更改文本时:

 Text(widget.fullData.driver.carReference != null ? widget.fullData.driver.carReference.toString() : '', style: TextStyle(color: ThemeUtils.bluePlus,fontSize: 18)),

有效:

我的模特:

@override
  Driver clone(Map<String, dynamic> map) => Driver()..fromJson(map);

  static const String carNameKey = 'carName';
  static const String carReferenceKey = 'carReference';
  static const String carSerieKey = 'carSerie';
  static const String carImageKey = 'carImage';

  String get carName => get<String>(carNameKey);
  String get carReference => get<String>(carReference);
  String get carSerie => get<String>(carSerie);
  ParseFile get carImage => get<ParseFile>(carImageKey);

  set carName(String value) => set<String>(carNameKey, value);
  set carReference(String value) => set<String>(carReferenceKey, value);
  set carSerie(String value) => set<String>(carSerieKey, value);
  set carImage(ParseFile value) => set<ParseFile>(carImageKey, value);

【问题讨论】:

我用虚拟文本 Container 替换了 Text(widget.fullData.driver.carReference != ..... 工作正常。也许您需要检查 Thins 小部件的父级别,因为它正在使用列,您可以分享它的父级 我也用虚拟文本替换了 widget.fullData.driver.carReference 并且它有效我认为 prb 在数据中 【参考方案1】:

解决方法是将我的setter修改为

  String get carReference => get<String>(carReferenceKey);
  String get carSerie => get<String>(carSerieKey);

【讨论】:

以上是关于***Error 是由我的自定义底页小部件引发的的主要内容,如果未能解决你的问题,请参考以下文章

Qt 设计师:嵌套的小部件不是成员吗?

在 Flutter 中的小部件之间传递数据的最佳方式

Yii 中的自定义小部件

从 Glade 文件构建时,Gtkmm 自定义小部件会引发错误

如何创建自定义小部件并在 Qt Designer 中使用它?

Qt:如何制作像 QTextField 一样对齐的自定义小部件