sliver_opacity.1.dart 1.95 KB
Newer Older
1 2 3 4 5 6
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';

7
/// Flutter code sample for [SliverOpacity].
8

9
void main() => runApp(const SliverOpacityExampleApp());
10

11 12
class SliverOpacityExampleApp extends StatelessWidget {
  const SliverOpacityExampleApp({super.key});
13 14 15 16

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
17
      home: SliverOpacityExample(),
18 19 20 21
    );
  }
}

22 23
class SliverOpacityExample extends StatefulWidget {
  const SliverOpacityExample({super.key});
24 25

  @override
26
  State<SliverOpacityExample> createState() => _SliverOpacityExampleState();
27 28
}

29
class _SliverOpacityExampleState extends State<SliverOpacityExample> {
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
  static const List<Widget> _listItems = <Widget>[
    ListTile(title: Text('Now you see me,')),
    ListTile(title: Text("Now you don't!")),
  ];

  bool _visible = true;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('SliverOpacity demo'),
      ),
      body: CustomScrollView(
        slivers: <Widget>[
          const SliverToBoxAdapter(
Lioness100's avatar
Lioness100 committed
46
            child: ListTile(title: Text('Press on the button to toggle the list visibility.')),
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
          ),
          const SliverToBoxAdapter(
            child: ListTile(title: Text('Before the list...')),
          ),
          SliverOpacity(
            opacity: _visible ? 1.0 : 0.0,
            sliver: SliverList(
              delegate: SliverChildListDelegate(_listItems),
            ),
          ),
          const SliverToBoxAdapter(
            child: ListTile(title: Text('Before the list...')),
          ),
        ],
      ),
      floatingActionButton: FloatingActionButton(
        child: const Icon(Icons.disabled_visible),
        onPressed: () {
          setState(() {
            _visible = !_visible;
          });
        },
      ),
    );
  }
}