Как предотвратить перетаскивание ящика под endDrawer?
Проблема
В Scaffold есть проблема с нарушением функций, которую я и полагаю, никто другой не могу исправить. Если вы тоже не можете это исправить, помогите мне придумать лучший хак!
Повторяемость
Выполните следующее...
import 'package:flutter/material.dart';
class Home extends StatelessWidget {
@override
Widget build(context) {
return Scaffold(
appBar: AppBar(),
drawer: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
color: Colors.green,
),
endDrawer: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
color: Colors.blue,
),
body: Container(
width: MediaQuery.of(context).size.width / 2,
color: Colors.black,
),
);
}
}
void main() {
runApp(MaterialApp(home: Home()));
}
Если щелкнуть крайний ящик, не касаясь черного, можно открыть ящик под ним.
Работа
Вот что у меня есть...
import 'package:flutter/material.dart';
class Home extends StatelessWidget {
@override
Widget build(context) {
final GlobalKey<ScaffoldState> key = new GlobalKey<ScaffoldState>();
return Scaffold(
key: key,
appBar: AppBar(),
drawer: (key.currentState?.isEndDrawerOpen ?? false)
? null
: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
color: Colors.green,
),
endDrawer: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
color: Colors.blue,
),
body: Container(
width: MediaQuery.of(context).size.width / 2,
color: Colors.black,
),
);
}
}
void main() {
runApp(MaterialApp(home: Home()));
}