Ошибка трепетания: каждый ребенок должен быть выложен ровно один раз. По планировке здания - PullRequest
8 голосов
/ 05 февраля 2020

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

О, и прежде чем я это сделаю go в глубине, я, вероятно, должен упомянуть, что я использую flutter_blo c.

Хорошо, поэтому у меня есть такой код:

class Settings extends StatelessWidget {
  final _formKey = GlobalKey<FormState>();
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
          title: new Text("SomeApp",style: TextStyle(color: Colors.white)),
          automaticallyImplyLeading: false,
          backgroundColor: myBlue.shade50,

          actions: <Widget>[
            IconButton(
              icon: new Icon(FontAwesomeIcons.download,color:  Colors.white),
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => DownloadView()),
                );
              },
            ),
            IconButton(
              icon: new Icon(FontAwesomeIcons.chevronCircleLeft,color:  Colors.white),
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => MainWindow()),
                );
              },
            ),]
      ),
      body: Container(
        padding: EdgeInsets.symmetric(vertical: 16),
        alignment: Alignment.center,
        child: new BlocBuilder<SettingsBloc, SettingsState>(
          builder: (context, state) {
            if (state is SettingsNotLoaded) {
              return new Center(
                  child: Text(
                    'count1',
                    style: TextStyle(fontSize: 24.0,color: Colors.black),
                  )
              );
            } else if (state is SettingsLoaded) {  
              return new Center(
                  child: Text(
                    'count2',
                    style: TextStyle(fontSize: 24.0,color: Colors.black),
                  )
              );
            }
            else
              {
                return new Center(
                    child: Text(
                      'count3',
                      style: TextStyle(fontSize: 24.0,color: Colors.black),
                    )
                );
              }
          },
        ),

      ),
    );
  }

И при запуске моего приложения я вижу appBar именно так, как я хочу, но я не вижу текста в теле (я должен видеть count1, count2 или count3), но вместо этого я получаю ошибку: «Каждый дочерний элемент должен быть размечен ровно один раз». ссылаясь на строку 5 - return new Scaffold(. Серьезно, это сводит меня с ума. Кто-нибудь что-нибудь знает?

Заранее спасибо и наилучшие пожелания всем!

PS. Ofcourse искал информацию на странице flutter_blo c, на https://flutter.dev/docs/development/ui/layout/tutorial, здесь и в Google.

Редактировать 1 Некоторые грамматические ошибки Редактировать 2 Добавлена ​​информация о правках

Ответы [ 4 ]

17 голосов
/ 08 февраля 2020

Привет, у меня просто была такая же проблема, я думаю, это просто ошибка в flutter.Stop, а затем переустановите приложение

5 голосов
/ 23 апреля 2020

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

Попробуйте следующую команду

flutter clean

затем запустите снова

flutter run

РЕДАКТИРОВАТЬ: После знакомства с Flutter в течение недели, теперь я понимаю, что внесение изменений в код, таких как добавление новой зависимости в pubspe c .yaml требует остановки При запуске приложения снова, я заметил, что GUI в IDE (я использую Android Studio) может иметь некоторые проблемы, вышеуказанные команды в командной строке работают просто отлично.

Happy Coding :)

3 голосов
/ 03 апреля 2020

Попробуйте следующее, у меня это работает на Android устройствах. 1- Остановить симуляцию. 2- Go до Android менеджер виртуальных устройств. 3- Go для «Действие» в виртуальном устройстве. 4- Нажмите стрелку вниз, чтобы увидеть опцию. 5- Нажмите «стереть данные». 6- Запустите симуляцию снова.

1 голос
/ 06 мая 2020

У меня возникла та же проблема, когда я выполнил горячую перезагрузку, затем я выполнил горячую перезагрузку, и она ушла. Похоже на ошибку Флаттера.

...