Как расширить SliverAppBar программно - PullRequest
1 голос
/ 08 июля 2019

У меня есть SliverAppBar, который прокручивается вверх, чтобы сжиматься, и прокручивается вниз, чтобы расширяться.

Я хочу развернуть SliverAppBar, когда я переключаю BottomNavigationBar.

В текущей ситуации состояние SliverAppBarдо переключения сохраняется.

Это мой код.https://gist.github.com/ysknsn/d90a84a180e32de5b0691de874c65d55

Любые советы полезны.Благодаря.

1 Ответ

0 голосов
/ 08 июля 2019

Просто сделайте то же самое, что вы сделали с TabController ...

Поместите его в локальную переменную:

  TabController _tabController;
  ScrollController _scrollController;

  int _selectedIndex = 0;

  @override
  void initState() {
    _tabController = TabController(vsync: this, length: 2);
    _scrollController = ScrollController(keepScrollOffset: true);
    super.initState();
  }

Затем используйте его в NestedScrollView`

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: DefaultTabController(

        length: _tabController.length,
        child: NestedScrollView(
          controller: _scrollController,
          key: PageStorageKey(widget.title),
          ...

Затем обновите позицию при нажатии:

  void _onItemTapped(int index) {
    _scrollController.jumpTo(0);
    setState(() {
      _selectedIndex = index;
      _tabController.index = index;
    });
  }
...