#dart #flutter
#dart #flutter
Вопрос:
У меня есть два экрана, где
Первое: перечисление данных из Firebase
Второе: добавьте данные на этот экран, поэтому я хочу вернуться к первому экрану, все работает нормально, только когда я возвращаюсь, был черный экран. Теперь проблема исчезла, я искал, как это работает, но мне все еще не ясна моя концепция по этому поводу, Кто-нибудь может описать, как это работает?
Перед:
return new MaterialApp(
title: "AddEditNames ",
home: new AddEditNameScreen(),
);
После: когда я заменил его на
return new Scaffold(
backgroundColor: Color.fromRGBO(30, 30, 30, 1.0),
body: new AddEditNameScreen(),
appBar: new AppBar(
elevation: 0.0,
backgroundColor: Colors.blueAccent,
actions: <Widget>[
],
title: new Text(
"AddEditNames",
style: new TextStyle(color: Colors.white),
),
centerTitle: true,
),
);
Ответ №1:
MaterialApp
это отправная точка вашего приложения, она сообщает Flutter, что вы собираетесь использовать компоненты Material и следовать material design в своем приложении.
Scaffold
используется под MaterialApp
, оно предоставляет вам множество базовых функций, таких как AppBar
, BottomNavigationBar
Drawer
, FloatingActionButton
, и т.д.
Итак, вот с чего начинается типичное приложение.
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(),
body: YourWidget(),
),
));
}
Комментарии:
1. В моем приложении flutter я использовал MaterialApp для всех экранов. так повлияет ли это на производительность? @CopsOnRoad
2. @BalajiRamadoss Для всего приложения должно быть только одно
MaterialApp
, если вы не собираетесь делать какие-то дурацкие вещи.3. Если MaterialApp уже сообщает, что мы можем использовать компоненты Material, такие как AppBar и т.д., Тогда зачем использовать Scaffold? и наоборот.
Ответ №2:
MaterialApp
это виджет, который представляет ряд виджетов ( Navigator
, Theme
), необходимых для создания приложения Material design.
В то время как Scaffold
позволяет реализовать стандартные виджеты приложения material, которые есть в большинстве приложений. Такие, как AppBar
, BottomAppBar
, FloatingActionButton
BottomSheet
, Drawer
Snackbar
,,,,,,,,,,,,,.
Scaffold
Разработан как единый контейнер верхнего уровня для MaterialApp, хотя нет необходимости вкладывать Scaffold
.
Также ознакомьтесь с официальным документом Flutter для MaterialApp
и Scaffold
.
Комментарии:
1. когда я поместил Navigator.of (mContext).pushNamed (‘/ screen1’) в MaterialApp, он не работает должным образом, но когда я помещаю его в Scaffold, он работает так, как должен, поэтому я сомневаюсь в том, как он ведет себя в stack?
2. Imo »
Scaffold
Разработан как единый контейнер верхнего уровня для a,MaterialApp
хотя нет необходимости вставлять Scaffold» звучит так, как будтоMaterialApp
обычно включает только одинScaffold
. Что касается нескольких страниц иNavigator
не тот случай.
Ответ №3:
Приложение Material является основным компонентом и предопределенным классом. Мы можем использовать приложение Material для создания виджетов для разработки приложений во Flutter. Приложение Material обладает несколькими свойствами. Некоторые из них — заголовок, главная страница, тема, цвет, маршруты и т.д.
Scaffold — это также другой класс, который можно использовать для разработки приложения. Он предоставляет нам API, такие как панели закусок, нижние листы, панель приложений, плавающая панель действий и т.д. Scaffold предоставляет нам фреймворк для реализации визуальной структуры макета приложения.