Как использовать разные ScrollController для NestedScrollView и два CustomScrollView внутри таблиц?

Я использую виджет NestedScrollView с TabBar, у меня есть две вкладки, и на каждой странице вкладки есть CustomScrollView. Когда я использую три разных ScrollController для каждого из них, они перестают вести себя как традиционная лента, это означает, что когда я прокручиваю какой-то CustomScrollView, заголовок Sliver не скрывается. Как я могу управлять тремя ScrollController по отдельности?


person Alex    schedule 13.05.2020    source источник


Ответы (2)


Можешь показать код? потому что трудно понять ваш случай. В любом случае я покажу вам свой код из одного из своих проектов, может, это поможет

Widget build(BuildContext context) {
widget.userBloc = BlocProvider.of<UserBloc>(context);
return Scaffold(
  body: NestedScrollView(
      headerSliverBuilder: (context, innerBoxIsScrolled) =>
      [
        SliverOverlapAbsorber(
          // ignore: deprecated_member_use
          child: SliverSafeArea(
            top: false,
            sliver: SliverAppBar(
              title: Text(
                '',
                style: TextStyle(
                  fontFamily: "Lato",
                  fontSize: 15,
                  //                        fontWeight: FontWeight.bold
                  ),
                ),
              centerTitle: true,
              expandedHeight: 100,
              floating: true,
              flexibleSpace: FlexibleSpaceBar(
                titlePadding: EdgeInsets.only(bottom: 25),
                title: Text(
                  'Hospedajes',
                  style: TextStyle(
                    fontFamily: "Lato",
                    fontSize: 24,
                    fontWeight: FontWeight.bold
                    ),
                  ),
                centerTitle: true,
                background: GradientBack(height: null,),
                ),
              ),

            ),
          handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
          )
      ],

      body: StreamBuilder(
    stream: widget.userBloc.authStatus,
    builder: (BuildContext context, AsyncSnapshot snapshot){
      switch (snapshot.connectionState){
        case ConnectionState.waiting:
          return Center(child: CircularProgressIndicator(),);
        case ConnectionState.none:
          return Center(child: CircularProgressIndicator(),);
        case ConnectionState.active:
          return showUserLodgingsData(snapshot);
        case ConnectionState.done:
          return showUserLodgingsData(snapshot);
        default:
          return showUserLodgingsData(snapshot);
      }
    },
      ),
      ),
  );
 }
person Abakim    schedule 13.05.2020

вы должны использовать контроллер вкладок и основной контроллер прокрутки, чтобы решить такую ​​проблему.

person Rohit Sainik    schedule 10.09.2020