v1.1.3sticky_and_expandable_list
एक समूहित सूची बनाएं, जिसमें अनुभाग को विस्तारित/संकुचित करने का समर्थन हो और स्टिकी हेडर हो, और स्लिवर विजेट के साथ उपयोग करने के लिए समर्थन हो।
चिपकने वाले शीर्षक और समूहित सूची Sliver कार्यान्वयन एक समूहित सूची बनाएं, जो खंड को विस्तारित/संकुचित करने का समर्थन करती है और चिपकने वाले शीर्षक का समर्थन करती है, Sliver विभाजक के साथ उपयोग करने के लिए समर्थन करती है।
{"sdk":"flutter"}{"sdk":"flutter"}यह अंग्रेज़ी मूल स्नैपशॉट है। नवीनतम सामग्री GitHub पर देखें।
Flutter implementation of sticky headers and expandable list.Support use it in a CustomScrollView.
Screenshot
In the pubspec.yaml of your flutter project, add the following dependency:
dependencies:
sticky_and_expandable_list: ^1.1.3
sectionList is a custom data source for ExpandableListView.
We should create a model list to store the information of each section, the model must implement ExpandableListSection.
//In this example, we create a custom model class(ExampleSection).
//class ExampleSection implements ExpandableListSection<String> {}
//so: SliverExpandableChildDelegate<String, ExampleSection>()
List<ExampleSection> sectionList = List<ExampleSection>();
return ExpandableListView(
builder: SliverExpandableChildDelegate<String, ExampleSection>(
sectionList: sectionList,
headerBuilder: (context, sectionIndex, index) =>
Text("Header #$sectionIndex"),
itemBuilder: (context, sectionIndex, itemIndex, index) {
String item = sectionList[sectionIndex].items[itemIndex];
return ListTile(
leading: CircleAvatar(
child: Text("$index"),
),
title: Text(item),
);
}),
);
If you want to use it with sliver widget, use SliverExpandableList instead of ExpandableListView.
setState(() {
sectionList[i].setSectionExpanded(true);
});
@override
Widget build(BuildContext context) {
ExpandableListView(
builder: SliverExpandableChildDelegate<String, ExampleSection>(
headerController: _getHeaderController(),
),
)
}
_getHeaderController() {
var controller = ExpandableListController();
controller.addListener(() {
print("switchingSectionIndex:${controller.switchingSectionIndex}, stickySectionIndex:" +
"${controller.stickySectionIndex},scrollPercent:${controller.percent}");
});
return controller;
}
Use sectionBuilder