小编vir*_*hjx的帖子

使用可折叠的应用程序栏(sliverAppBar)时如何保留tabView的滚动位置?

问题:

当其中一个tabView滚动到顶部时(显示sliverAppBar),tabView的滚动位置无法正确还原。另一个tabView也将滚动到顶部(失去其先前的滚动位置)。

  • 如果使用普通的应用程序栏(可折叠的应用程序栏),则不会出现此问题
  • 当tabView滚动到顶部时才会出现此问题

题:

使用可折叠的应用程序栏(sliverAppBar)时如何保留tabView的滚动位置?

码:

import 'package:flutter/material.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new DefaultTabController(
      length: 2,
      child: Scaffold(
        body: NestedScrollView(
          headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
            return <Widget>[
              SliverAppBar(
                title: Text('Example'),
                pinned: true,
                floating: true,
                forceElevated: innerBoxIsScrolled,
                bottom: …
Run Code Online (Sandbox Code Playgroud)

scroll-position nestedscrollview flutter flutter-sliver flutter-layout

5
推荐指数
1
解决办法
396
查看次数