Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在向上滚动时隐藏应用程序栏,但在向下滚动时显示?_Flutter_Dart - Fatal编程技术网

Flutter 如何在向上滚动时隐藏应用程序栏,但在向下滚动时显示?

Flutter 如何在向上滚动时隐藏应用程序栏,但在向下滚动时显示?,flutter,dart,Flutter,Dart,我正试图实现我们在android WhatsApp中看到的行为,并在材料设计、检查建议和视频中建议选项卡行为 . 当我向下滚动时,我希望选项卡栏可见,但应用程序栏隐藏,这种行为也可以在中型android应用程序上看到 我看到有一个更早的答案,但它不适合我 return DefaultTabController( length: 2, child:Scaffold( body: NestedScrollView( headerSliverBuilder: (Build

我正试图实现我们在android WhatsApp中看到的行为,并在材料设计、检查建议和视频中建议选项卡行为 . 当我向下滚动时,我希望选项卡栏可见,但应用程序栏隐藏,这种行为也可以在中型android应用程序上看到

我看到有一个更早的答案,但它不适合我

 return DefaultTabController(
  length: 2,
  child:Scaffold(
    body: NestedScrollView(
      headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
        return <Widget>[
         SliverAppBar(
            title: Text("Application"),
            floating: true,
            pinned: true,
            snap: true,
            bottom: TabBar(
              tabs: <Tab>[
               Tab(text: "T"),
               Tab(text: "B"),
              ], // <-- total of 2 tabs
            ),
          ),
        ];
      },
      body: TabBarView(
        children: <Widget>[
         RandomWords(),
         RandomWords(),
        ], 
      ),
    ),
  ),
);
我尝试了几种方法,但嵌套的滚动视图对我不起作用

 return DefaultTabController(
  length: 2,
  child:Scaffold(
    body: NestedScrollView(
      headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
        return <Widget>[
         SliverAppBar(
            title: Text("Application"),
            floating: true,
            pinned: true,
            snap: true,
            bottom: TabBar(
              tabs: <Tab>[
               Tab(text: "T"),
               Tab(text: "B"),
              ], // <-- total of 2 tabs
            ),
          ),
        ];
      },
      body: TabBarView(
        children: <Widget>[
         RandomWords(),
         RandomWords(),
        ], 
      ),
    ),
  ),
);
返回DefaultTabController(
长度:2,
孩子:脚手架(
正文:嵌套滚动视图(
headerSliverBuilder:(BuildContext上下文,boolInnerBoxIsCrolled){
返回[
滑杆(
标题:文本(“申请”),
浮动:是的,
对,,
是的,
底部:选项卡栏(
选项卡:[
选项卡(文本:“T”),
选项卡(文本:“B”),

],//您可以使用SliverList和SliverAppBar

试试这个

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return DefaultTabController(
      length: 2,
      child: new Scaffold(
        body: new NestedScrollView(
          headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
            return <Widget>[
              new SliverAppBar(
                title: Text("Application"),
                floating: true,
                pinned: true,
                snap: true,
                bottom: new TabBar(
                  tabs: <Tab>[
                    new Tab(text: "T"),
                    new Tab(text: "B"),
                  ], // <-- total of 2 tabs
                ),
              ),
            ];
          },
          body: new TabBarView(
            children: <Widget>[
              Center(
                  child: Text(
                'T Tab',
                style: TextStyle(fontSize: 30),
              )),
              Center(
                  child: Text(
                'B Tab',
                style: TextStyle(fontSize: 30),
              )),
            ],
          ),
        ),
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(新的MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新材料PP(
标题:“颤振演示”,
主题:新主题数据(
主样本:颜色。蓝色,
),
主页:新建MyHomePage(),
);
}
}
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>new_MyHomePageState();
}
类_MyHomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回DefaultTabController(
长度:2,
儿童:新脚手架(
正文:新嵌套滚动视图(
headerSliverBuilder:(BuildContext上下文,boolInnerBoxIsCrolled){
返回[
新滑杆(
标题:文本(“申请”),
浮动:是的,
对,,
是的,
底部:新选项卡栏(
选项卡:[
新选项卡(文本:“T”),
新选项卡(文本:“B”),

],//您可以添加您尝试过的代码吗?@jitsm555完成。尝试设置floating:false,pinted:false,snap:false发生了什么事?您可以链接视频吗?@GenchiGenbutsu我正在加载到选项卡中的小部件似乎有问题。因此,虽然这本身只适用于选项卡中的文本,但当我尝试加载自己的小部件时,它不起作用滚动显示基本行为是小部件显示一个加载json文件的列表,当有人单击列表中的某个条目时,我会将其导航到一个新页面。