Как сделать пользовательский виджет таблицы во флаттере? - PullRequest
0 голосов
/ 07 июля 2019

Я делаю собственный виджет для отображения еженедельного расписания. Я хочу, чтобы это выглядело как обычная таблица с днями в заголовке и временем дня на вертикальной оси. Затем я хочу добавить события в календарь, но так как событие может охватывать несколько ячеек, я не могу использовать встроенную таблицу (она не имеет столбцов / строк).

Итак, я начал создавать свою собственную таблицу, используя CustomPaint. Все шло нормально, пока я не пришел к заголовочной части, которая застряла на макете с моей идеей. В приведенном мною коде видно, что заголовок будет иметь такую ​​же ширину, что и боковая панель (со временем) и WeekView (таблица CustomPaint). Это означает, что я понятия не имею, как выровнять заголовок (понедельник, вторник и т. Д.) С сеткой в ​​WeekView, поскольку пространство, занимаемое боковой панелью, неизвестно. И поскольку я хочу, чтобы боковая панель прокручивалась вместе со столом, она должна быть внутри прокрутки. Могу ли я решить это любым другим способом? Может быть, со щепками (о которых я еще очень мало знаю)?

@override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        WeekSelector(
          week: controller.week,
          onPrevPressed: onPrevPressed,
          onNextPressed: onNextPressed,
        ),
        WeekHeader(),
        Expanded(
          child: SingleChildScrollView(
            scrollDirection: Axis.vertical,
            child: Container(
              child: Row(
                children: <Widget>[
                  Text("09:00"), // here will be a bar for the time
                  Expanded(
                    child: WeekView(
                      startHour: 9,
                      endHour: 18,
                    ),
                  ),
                ],
              ),
            ),
          ),
        ),
      ],
    );
  }
...