0

So i want to show posts and for that am using listview.builder in the body of nestedscrollview but when i scroll down then appbar doesn't get hided. This is in case of listview.builder only if i assign controller to it. If i don't then it works perfectly.

return Scaffold(
      backgroundColor: Colors.white,
      body: SafeArea(
        child: NestedScrollView(
          headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
            return <Widget>[
              SliverAppBar(
                pinned: false,
                floating: true,
                snap: true,
                forceElevated: innerBoxIsScrolled,
                backgroundColor: Themes.secondaryColor,
                automaticallyImplyLeading: false,
                elevation: 0.0,
                titleSpacing: 0,
                toolbarHeight: 90,
                title: Padding(
                  padding: const EdgeInsets.only(left:8.0),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      Text(
                        "Trending",
                        style: GoogleFonts.roboto(
                          textStyle: const TextStyle(
                            fontSize: 20,
                            color: Color(0xff000000),
                            fontWeight: FontWeight.w500,
                          ),
                        ),
                        textAlign: TextAlign.left,
                      ),
                      const SizedBox(height: 10,),
                      SizedBox(
                        width: double.infinity,
                        height: 27,
                        child: ListView.separated(
                          scrollDirection: Axis.horizontal,
                          physics: const BouncingScrollPhysics(),
                          itemCount: categories.length,
                          separatorBuilder: (context,index)=>const SizedBox(width: 5,),
                          itemBuilder: (context,index){
                            return Container(
                              alignment: Alignment.center,
                              decoration: BoxDecoration(
                                borderRadius: BorderRadius.circular(5),
                                color: selectedIndex==index?Themes.primaryColor:Themes.primaryColor.withOpacity(0.5),
                              ),
                              padding: const EdgeInsets.symmetric(vertical:5,horizontal: 12),
                              child: Text(
                                categories[index],
                                style: const TextStyle(color: Colors.white,fontSize: 13),
                              ),
                            );
                          },
                        ),
                      ),
                    ],
                  ),
                ),
              ),
            ];
          },
          body: loading?const Center(child: CircularProgressIndicator(),
          ):ListView.separated(
            controller: scrollController,
            padding: const EdgeInsets.symmetric(vertical:15),
            itemCount: posts.length,
            separatorBuilder: (context,index)=>const SizedBox(height: 6,),
            itemBuilder: (context,index)=>posts[index],
          ),
        ),
      ),
    );

1 Answer 1

1

If you only need the controller to do something like pagination or listen to scroll event use NotificationListener it will allow you to do that.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.