#flutter #dart
Вопрос:
Я строю график, и я хочу, чтобы боковые заголовки графика (ось Y) оставались фиксированными в левой части экрана и позволяли прокручивать график горизонтально. Я построил график, но не могу сделать его прокручиваемым:
Container(
width: MediaQuery.of(context).size.width,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
height: MediaQuery.of(context).size.height /2,
width: MediaQuery.of(context).size.width / 10,
child: SideTitles()),
Container(
//needs to be scrollable
width: MediaQuery.of(context).size.width * 0.9,
height: MediaQuery.of(context).size.height /2,
child: Stack(
children: graph,
),
),
],
),
)
Я попытался обернуть стек с помощью однократного просмотра, но затем график просто исчезает. Я также попытался обернуть контейнер с помощью SingleChildScrollView, но затем я получаю ошибку переполнения, потому что родителем является строка, которая является виджетом Flex.
Есть какие-нибудь идеи, как я могу этого добиться?
Ответ №1:
Вы пробовали ListView с направлением прокрутки: Ось.горизонталь.
Дополнительная информация: https://flutter.dev/docs/cookbook/lists/horizontal-list
Ответ №2:
Хорошо, я исправил это, добавив clipBehavior: Clip.none
в стек, а затем обернув его контейнером той же ширины, что и график, и, наконец, обернув этот контейнер с помощью SingleChildScrollView()
return Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: graph.yHeight,
width: MediaQuery.of(context).size.width / 10,
child: SideTitles()),
Container(
width: MediaQuery.of(context).size.width * 0.9,
height: MediaQuery.of(context).size.height / 2,
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Container(
width: graph.xWidth,
child: Stack(
children: graph.graphList,
clipBehavior: Clip.none,
),
),
),
),
],
)