首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式扩展SliverAppBar

如何以编程方式扩展SliverAppBar
EN

Stack Overflow用户
提问于 2019-07-08 23:32:53
回答 2查看 1.5K关注 0票数 2

我有一台SliverAppBar,它可以向上滚动缩小,向下滚动扩展。

当我切换BottomNavigationBar时,我想扩展SliverAppBar。

在当前情况下,保持切换前的SliverAppBar状态。

这是我的代码。https://gist.github.com/ysknsn/d90a84a180e32de5b0691de874c65d55

任何建议都是有帮助的。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-07-09 02:10:46

就像你对TabController做的一样……

将其放在一个局部变量中:

代码语言:javascript
复制
  TabController _tabController;
  ScrollController _scrollController;

  int _selectedIndex = 0;

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

然后在你的NestedScrollView`中使用它

代码语言:javascript
复制
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: DefaultTabController(

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

然后在单击时更新位置:

代码语言:javascript
复制
  void _onItemTapped(int index) {
    _scrollController.jumpTo(0);
    setState(() {
      _selectedIndex = index;
      _tabController.index = index;
    });
  }
票数 1
EN

Stack Overflow用户

发布于 2021-10-13 15:22:34

添加一个滚动控制器到你的‘自定义滚动视图’

代码语言:javascript
复制
ScrollController _scrollController;

Widget build(BuildContext context) {
_scrollController = ScrollController();
return Scaffold(
body: CustomScrollView( shrinkWrap: true, controller: _scrollController,
physics: BouncingScrollPhysics(),
slivers: <Widget>[
SliverAppBar(
pinned: false,
:
:
:
:
:
:
:
:
:
onPressed: () {// Scroll to top when on click => Expand 
_scrollController.animateTo(
_scrollController.position.minScrollExtent,
duration:Duration(milliseconds:1300),
curve: Curves.decelerate,);
 },

onPressed: () {// Scroll to bottom when on click => Collapse
scrollController.animateTo(
    scrollController.position.maxScrollExtent,
    duration: Duration(milliseconds: 1300),
    curve: Curves.decelerate,
  );
 },
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56938250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档