как я могу сделать так, чтобы заголовки из Custom Sticky Header вставлялись друг под друга, а не перекрывались при трепетании?

Я думаю, что понял, как теперь работает пользовательский липкий заголовок, но я просто не могу найти, где я могу добавить функциональность, чтобы предотвратить перекрытие заголовков липкого заголовка. Я хотел бы добиться чего-то, как на картинке ниже, но без перекрытия заголовки, я хочу, чтобы каждый заголовок располагался ниже друг друга. Любая помощь в том, где добавить дополнительные функции, будет огромной помощью, заранее спасибо! изображение, показывающее перекрывающийся липкий заголовок

Изменить: ссылка на источник


person Daniel Geuza    schedule 01.08.2019    source источник


Ответы (1)


Ладно, логика проста. просто добавьте заголовок в свой список и подэлементы заголовка в этот список.

Итак, вы можете реализовать свои требования, используя код:

    List<Widget> _buildStickySliverListTest(ListCount sliverList) {
    var widgetList = List<Widget>();
    for (int index = 0; index < sliverList.data.length; index++) {
      widgetList
        ..add(
          SliverAppBar(
            automaticallyImplyLeading: false,
            title: Text("Header $index"),
            pinned: true,
          ),
        )
        ..add(
          SliverFixedExtentList(
            itemExtent: 50.0,
            delegate:
            SliverChildBuilderDelegate((BuildContext context, int index) {
              return Container(
                alignment: Alignment.center,
                color: Colors.lightBlue[100 * (index % 9)],
                child: Text('Sublist item $index'),
              );
            }, childCount: sliverList.data[index].length),
          ),
        );
    }

    return widgetList;
  }

  @override
  Widget build(BuildContext context) {
    var list1=["a","b","c"];
    var list2=["a","b","c","d","e"];
    var list3=["a","b"];
    var list4=["a","b","c","d"];
    var data=[list1,list2,list3,list4];
    var sliverList=ListCount(data);

    return Scaffold(
      appBar: AppBar(
        title: Text("Sticky Sliver List"),
      ),
      body: CustomScrollView(
      slivers: _buildStickySliverListTest(sliverList),
      ),
    );
  }

Кроме того, создайте класс для ListCount, как показано ниже,

class ListCount{
  List<List<String>> data;

  ListCount(this.data);
}

Таким образом, вы можете легко создать заголовок и подсписок. реализовать свою логику для списка и заголовка по вашему выбору.

Я надеюсь, что это будет работать для ваших требований.

person Jay Mungara    schedule 02.08.2019
comment
Да, желаемый результат достигнут, но когда я попытался уменьшить количество sliverListSize в функции _buildStickySliverList, например, _buildStickySliverList (2, 2), элементы подсписка первого заголовка не закрываются до конца, во-вторых, как сделать количество подсписков элемент каждого заголовка по-разному (не постоянный) - person Daniel Geuza; 02.08.2019
comment
Я думаю, что это соответствует моим требованиям, я ценю ваше время и внимание - person Daniel Geuza; 02.08.2019