трепетание списка с радио не отображается в alertDialog - PullRequest
0 голосов
/ 27 марта 2020

Это код. код:

  class ThemeChangerWidget extends StatelessWidget {
  final List<String> string = ['Light', 'Dark', 'Amoled'];
  @override
  Widget build(BuildContext context) {
  final stateData = Provider.of<ThemeNotifier>(context);
  final ThemeData state = stateData.getTheme();

  return Theme(
  data: state.copyWith(unselectedWidgetColor: state.accentColor),
  child: AlertDialog(
      backgroundColor: state.primaryColor,
      shape:
          RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0)),
      title: Text('Select Theme', style: state.textTheme.body1),
      content: ListView.builder(
        shrinkWrap: true,
        itemBuilder: (context, index) {
          return RadioListTile(
            value: index,
            groupValue: themes.indexOf(state),
            onChanged: (ind) {
              onThemeChanged(ind, stateData);
            },
            title: Text(
              string[index],
              style: state.textTheme.body2,
            ),
          );
        },
        itemCount: string.length,
      )),
      );
     }
     }'

ошибки - во время выполнения executeLayout () было выдано следующее утверждение: RenderShrinkWrappingViewport не поддерживает возвращение внутренних значений c.

Расчет внутренних значений c потребует создания экземпляра каждый дочерний элемент области просмотра, который побеждает точку просмотра областей, являющуюся ленивым. Если вы просто пытаетесь сжать область просмотра в направлении главной оси, вы сможете добиться этого эффекта, просто установив свободные ограничения для области просмотра без необходимости измерения его внутренних c размеров.

enter image description here

1 Ответ

0 голосов
/ 28 марта 2020

AlertDialog использует виджет IntrinsicWidth, который не позволяет ListView.builder. Вы должны указать c ширину для ListView Пример:

    return AlertDialog(
      title: Text('Dialog'),
      content: Container(
        width: double.maxFinite,
        child: ListView(
          children: <Widget>[
           //Your content here
          ],
        ),
      ),
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...