Quantcast
Channel: Active questions tagged listview - Stack Overflow
Viewing all articles
Browse latest Browse all 611

Select The Items From Horizontal List On Scrolling Vertical List Flutter

$
0
0

can somebody help to solve the problem?There are two scenarios:

  1. When Select the category from horizontal list, it should select relevant category and shows highlight on that category, also should scroll the relevant data from vertical list.
  2. When scrolling the vertical list, it should highlight the correct categories from horizontal list on scroll. Also horizontal list should scroll with vertical list.

I want to add both these features in a page, they are working correctly independently, but when I add both features, They are not working fine

       //code to select a category  onTap: () {                                                    if (selectedCategoryIndex !=                                                        index) {                                                      setState(() {                                                        selectedCategoryIndex = index;                                                      });                                                  // Only scroll horizontally if it's necessary                                                  if (index > 2) {                                                    // If the selected index is greater than 2, scroll the horizontal list forward                                                    upperController.animateTo(                                                        index * 50.0,                                                        duration: Duration(                                                            milliseconds: 500),                                                        curve: Curves.ease);                                                  } else if (index <                                                      categories.length - 2) {                                                    // If the selected index is less than 2, scroll the horizontal list backward                                                    upperController.animateTo(0,                                                        duration: Duration(                                                            milliseconds: 500),                                                        curve: Curves.ease);                                                  }                                                  // Scroll to the selected index in the vertical list                                                  lowerController.scrollToIndex(index,                                                      preferPosition:                                                      AutoScrollPosition.begin);                                                  // Scroll to the selected index in the menu items list                                                  menuItemsController.scrollToIndex(                                                      index,                                                      preferPosition:                                                      AutoScrollPosition.begin);                                                  print("selectedCategoryIndex");                                                  print(selectedCategoryIndex);                                                  print("index");                                                  print(index);                                                }                                              },    //code called in initState,    lowerController.addListener(_onVerticalScroll);   void _onVerticalScroll() {    double upperListMaxScroll = upperController.position.maxScrollExtent;    double lowerListMaxScroll = lowerController.position.maxScrollExtent;    double lowerListOffset = lowerController.position.pixels;    // Calculate the scroll percentage    double scrollPercentage = lowerListOffset / lowerListMaxScroll;    double upperListNewOffset = scrollPercentage * upperListMaxScroll;    upperController.jumpTo(upperListNewOffset);    // Calculate the index based on the scroll percentage    int newIndex = (scrollPercentage * categories.length).round(); // Assuming 6 categories    // Ensure that the index doesn't exceed the range of available categories    newIndex = newIndex.clamp(0, categories.length-1);    // Assuming 6 categories    // Adjust newIndex based on dynamic conditions    // int range = 1; // Define the range from start and end    // if (newIndex == range) {    //   newIndex = newIndex + 1; // If newIndex is within 'range' from start, add 1    // }    // else if (newIndex >= categories.length - range - 1) {    //   newIndex = newIndex - 1; // If newIndex is within 'range' from end, subtract 1    // }    setState(() {      selectedCategoryIndex = newIndex;    });  }

Viewing all articles
Browse latest Browse all 611

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>