2017-05-23 2 views
0

Ich kann eine SliverAppBar anheften und dann einen SliverList-Inhalt darunter scrollen lassen. Gibt es ein Äquivalent, um die Liste unter einer BottomBar scrollen zu lassen?Gibt es ein Äquivalent zum Pin SliverAppBar für BottomBar?

Der Trick ist, dass ich möchte, dass AppBar und BottomBar gleichzeitig den Scroll-Effekt haben.

Dies ist die Wiedergabe des AppBar

AppBar rendering

Und das ist die Wiedergabe des Bottom Bottom render

Ich mag würde Nachrichten unter der Texteingabe blättern Diplay und nicht haben gefüllte Farbe.

Ist das möglich? Vielen Dank.

Antwort

1

Die unteren Navigationsleisten scrollen normalerweise nicht. Können Sie Ihre BottomNavigationBar in den Scaffold 's bottomNavigationBar Slot setzen und eine AnimatedCrossFade verwenden, wenn Sie es in und außer Sicht bringen wollen? Wenn dies Ihren Anwendungsfall nicht löst, sollten Sie den Scrolling-Effekt, den Sie erreichen möchten, präzisieren.

Edit: Wenn Sie nur ein Widget am unteren Bildschirmrand positionieren und es über Ihre Liste gestapelt haben möchten, können Sie eine Stack verwenden.

screenshot

import 'dart:collection'; 
import 'package:flutter/scheduler.dart'; 
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, 
     primaryColorBrightness: Brightness.light, 
    ), 
     home: new MyHomePage(), 
    ); 
    } 
} 

class MyHomePage extends StatefulWidget { 
    State createState() => new MyHomePageState(); 
} 


class MyHomePageState extends State<MyHomePage> { 
    ScrollController _scrollController = new ScrollController(); 

    List<Widget> _items = new List.generate(60, (index) { 
    return new Text("item $index"); 
    }); 

    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     body: new Stack(
     children: [ 
      new ListView(
      controller: _scrollController, 
      children: new UnmodifiableListView(_items), 
     ), 
      new Positioned(
      top: 0.0, 
      left: 0.0, 
      right: 0.0, 
      child: new AppBar(
       elevation: 0.0, 
       backgroundColor: Colors.white.withOpacity(0.8), 
       title: new Text('Sliver App Bar'), 
      ), 
     ), 
      new Positioned(
      left: 0.0, 
      right: 0.0, 
      bottom: 0.0, 
      child: new Container(
       decoration: new BoxDecoration(
       border: new Border.all(
        width: 3.0, 
        color: Colors.blue.shade200.withOpacity(0.5) 
       ), 
       color: Colors.white.withOpacity(0.8), 
       borderRadius: new BorderRadius.all(
        new Radius.circular(10.0), 
       ), 
      ), 
       height: 40.0, 
       margin: const EdgeInsets.symmetric(
       horizontal: 20.0, vertical: 10.0) 
      ), 
     ), 
     ], 
    ), 
    ); 
    } 
} 
+0

Added Screenshots eine bessere Beschreibung für den Fall zu erhalten. Danke Collin. –

+0

Stimmt, ich habe angefangen, Sliver zu verwenden, um die Leiste zu verstecken und dann den Google Allo-Stil mit Deckkraft zu verwenden, um Code zu verstecken, kann vereinfacht werden. Danke für deine Hilfe Collin. –

Verwandte Themen