Прокрутка ListView в стеке, наложенная не полностью прозрачным контейнером во флаттере - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь написать код, который позволил бы мне прокручивать список обычными средствами (нажмите на экран, удерживайте его, а затем перетащите его вверх или вниз).

Дело в том, что я хотел бы, чтобы список частично перекрывался контейнерами, некоторые из которых не полностью прозрачны (сейчас я пытаюсь использовать для этого Stack).

Я заметил, что это работает, но только частично, и это потому, что я могу прокручивать список, только если я запускаю прокрутку, нажимая на экран, где находится полностью прозрачный контейнер - средний контейнер без определенного цвета ( проверьте код ниже). Любые попытки прокручивать список, нажимая на экран где-либо еще - я имею в виду в частично непрозрачных контейнерах (выше или ниже), он не прокручивается.

Очевидно, я хотел бы иметь возможность начать прокрутку, нажав в любом месте экрана, поэтому любые предложения будут с благодарностью!

import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

void main() => runApp(
    MaterialApp(
      home: TestWidget(),
    )
);

class TestWidget extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    final size = MediaQuery.of(context).size;
    return Scaffold(
        body: Stack(
          children: [
            Container(
                child: ListView(
                  children: List.generate(20,
                     (no) => ListTile(
                        leading: Text((no+1).toString()),
                        title: Text('Some title: ${no+1}'),
                        trailing: Icon(Icons.check),
                     )
                  ),
                )
            ),

            Column(
                children: [
                Container(
                    color: Colors.black.withOpacity(.7),
                    width: size.width,
                    height: size.height/3,
                ),
                Container(
                  // can scroll if scrolling starts in a container with the line like the one below is commented out
                  // color: Colors.black.withOpacity(.7),
                  width: size.width,
                  height: size.height/3
                ),
                Container(
                  color: Colors.black.withOpacity(.7),
                  width: size.width,
                  height: size.height/3
                )
              ]
            )
          ]
      )

    );
  }
}
...