Как объединить flutter_sticky_header с flutter_staggered_grid_view? - PullRequest
0 голосов
/ 13 февраля 2019

Я пытался объединить flutter_staggered_grid_view с flutter_sticky_header, потому что я хочу липкий заголовок, который имеет динамическое соотношение сторон, специфичное для каждого ребенка (не для всех детей, как в реальном коде и на скриншоте: https://i.stack.imgur.com/lZgp0.png).Я хочу, чтобы это было только для того, чтобы текст соответствовал карточке или контейнеру (мне подходит crossAxisCount: 1), но было бы здорово объединить эти два проекта:)

@ Ромэн Растел - отличная работа!Если вы найдете это интересным, пожалуйста, помогите:)

List<Widget> _buildSideHeaderGrids(
  BuildContext context, int firstIndex, int count) {
double cardWidth = MediaQuery.of(context).size.width / 3.3;
double cardHeight = MediaQuery.of(context).size.height / 3.6;

List<double> topet = [2,3,4];
return List.generate(count, (sliverIndex) {
  print(sliverIndex);
  sliverIndex += firstIndex;
  return new SliverStickyHeader(
    overlapsContent: true,
    header: _buildSideHeader(context, sliverIndex),
    sliver: new SliverPadding(
      padding: new EdgeInsets.only(left: 60.0),
      sliver: new SliverGrid(
        gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 1,
            crossAxisSpacing: 4.0,
            mainAxisSpacing: 4.0,
            childAspectRatio: topet[sliverIndex],
        ),
        delegate: new SliverChildBuilderDelegate(
          (context, i) => GestureDetector(
                  child: new GridTile(
                  child: Card(
                    child: new Container(
                      color: Colors.orange,
                      child: Text(""),
                    ),
                  ),
                  footer: new Container(
                    color: Colors.white.withOpacity(0.5),
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: new Text(
                        'Grid tile #$i',
                        style: const TextStyle(color: Colors.black),
                      ),
                    ),
                  ),
                ),
              ),
          childCount: 3, // grid tile brenda
        ),
      ),
    ),
  );
});
}
...