#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
Поэтому я попытался добавить отступ в первый элемент списка, но он блокирует щелчок, поэтому детектор жестов не регистрирует нажатие.