В настоящее время я использую раскрывающуюся кнопку в качестве заголовка скаффолда.
В этом раскрывающемся списке некоторые параметры не имеют соответствующего изображения, и поэтому отображается только текст. У меня это работает отлично, моя единственная проблема в том, что всегда возникает ошибка, когда приложение запускается (без горячей перезагрузки), потому что изображение не загружается мгновенно, означая, что FittedBox пытается установить пустой виджет, как только он загружается, он в порядке , а затем горячие перезагрузки работают нормально, без ошибок, потому что изображение уже загружено. Вот мой код для моих DropDownMenuItems:
return DropdownMenuItem(
value: company.id.toString(),
child: Center(
child: FittedBox(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
margin: EdgeInsets.all(10),
child: (config.companyLogos[company.id] != null)
? FittedBox(
child: Image.asset(
config.companyLogosPath +
config.companyLogos[company.id],
height: 50,
),
fit: BoxFit.contain,
)
: FittedBox(
child: Text(
company.name,
style: TextStyle(fontSize: 30),
)),
),
],
)))));
А вот ошибка, которая выдается при запуске приложения, я уверен, что это связано с тем, что я описал выше:
flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
flutter: The following assertion was thrown during performLayout():
flutter: 'package:flutter/src/rendering/box.dart': Failed assertion: line 313 pos 12: 'width > 0.0': is not
flutter: true.
Рассмотренные решения:
Возможным решением было бы предоставить ширину изображения, я мог бы включить это в свою карту companyLogos, сделав ее Картой Карт и включив имя файла и ширину в субкарту.
Тем не менее, у меня есть ie это, и это, похоже, не работает, просто делает мои изображения намного меньше, чем если бы я использовал ненастроенную ширину.
Я не являюсь явно определение ширины, чтобы оно сохраняло свое соотношение сторон, в то время как все еще умещается в строке.
Возможно, мне здесь не хватает трюка с обработкой изображений в флаттере / дротике, любая помощь будет принята с благодарностью, спасибо!