Flutter имеет целый класс встроенных компонентов от Material Design. Когда Scaffold упрощает работу для многих разработчиков, мой случай выглядит странным, когда я хочу, чтобы тело находилось за прозрачной панелью приложений.
Как отображать тело под панелью приложений виджета scaffold, а не под ним?
Я переключился на использование Stack для настройки панели приложений и другого содержимого в теле. Теперь я чувствую, что использовать большинство компонентов из библиотеки материального дизайна сложнее. Большинство вещей становится сложнее, так как везде он связан с компонентом Scaffold, а я его не использую.
Как мне реализовать ящик во Flutter без использования Scaffold?
Я собираюсь дать здесь своего рода ответ.
Определенно можно использовать только ScaffoldController и MultiChildLayoutDelegate так же, как Scaffold (флаттер хорош тем, что все имеет открытый исходный код, поэтому вы можете читать и дублировать соответствующие части), но это непросто. Если вы действительно хотите это сделать, я бы посоветовал прочитать исходный код для Scaffold, пока вы не поймете, что происходит. Затем вы можете скопировать соответствующие части кода, пока он не заработает.
Но есть более простой способ, который, я думаю, сработает для вас. Вместо этого я бы порекомендовал вам делать использовать подмости. Ничто не говорит о том, что вам нужно использовать его AppBar
- вы все равно можете иметь свою собственную реализацию в теле. Таким образом, вы получаете drawer
, включая материал LTR RTL и все остальное, что делает Scaffold, без необходимости реализовывать и поддерживать все это.
Если это по-прежнему не работает для вас, и вы не можете никуда добраться, просматривая источник, дайте мне знать, и я, возможно, смогу изучить создание простого примера, когда у меня будет больше времени.
Я сделал AppBar внутри тела и пропустил слот панели приложений, и все работает нормально.