Как создать заполнение «полупрозрачное поведение попадания» в начале представления списка?

#flutter #dart

Вопрос:

Я хотел бы иметь пробел перед представлением списка, но иметь возможность прокручивать дальше и, следовательно, скрывать это пространство.

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

Вот минимальный пример, его должно быть легче понять. Я бы хотел, чтобы при нажатии на зеленый контейнер было напечатано «1-й контейнер».:

 import 'package:flutter/material.dart';

const Color darkBlue = Color.fromARGB(255, 18, 32, 47);

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(
        scaffoldBackgroundColor: darkBlue,
      ),
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: MyWidget(),
        ),
      ),
    );
  }
}

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        GestureDetector(
          behavior: HitTestBehavior.opaque,
          onTap: () => print('tapped 1st container'),
          child: Container(
            height: 250,
            width: MediaQuery.of(context).size.width,
            color: const Color(0xff41e47d),
          ),
        ),
        SingleChildScrollView(
          child: Padding(
            padding: const EdgeInsets.only(left: 12, right: 12, top: 180, bottom: 12),
            child: Container(
              color: Colors.white,
              width: 1000,
              height: 1000,
            ),
          ),
        ),
      ],
    );
  }
}
 

https://dartpad.dev/?id=09c3995ef313dfb221cd92590883c86b

Поэтому я попытался добавить отступ в первый элемент списка, но он блокирует щелчок, поэтому детектор жестов не регистрирует нажатие.