flutter:: Можно ли загрузить statefulwidget как вторую страницу?

У меня есть main.dart, a.dart и b.dart. Когда я запускаю main.dart, все результаты a и b отображаются на одной странице. Но я хочу, чтобы результаты a и b отображались на разных страницах. Поэтому я использовал MaterialPageRoute, чтобы сделать видимым на первой странице и b на второй странице. но произошла ошибка.

Именованный параметр «записи» является обязательным, но нет соответствующего аргумента.

Я предполагаю, что a и b оба написаны с помощью statefulwidget, поэтому появляется ошибка. Есть какие-нибудь советы по этому поводу?

Пример a. dart

      class Recorder extends StatefulWidget {
  final Function save;

  const Recorder({Key? key, required this.save}) : super(key: key);
  @override
  _RecorderState createState() => _RecorderState();
}

class _RecorderState extends State<Recorder> {

б. пример

      class Records extends StatefulWidget {
  final List<String> records;
  const Records({
    Key? key,
    required this.records,
  }) : super(key: key);

  @override
  _RecordsState createState() => _RecordsState();
}

class _RecordsState extends State<Records> {

пример main.dart

      class HomePage extends StatefulWidget {
  final String _appTitle;

  const HomePage({Key? key, required String title})
      : assert(title != null),
        _appTitle = title,
        super(key: key);

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {

Пример main.dart (ошибка)

        @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        onPressed: (){
        },
        child:  InkWell(child: Icon(Icons.mic),onTap: (){
          Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => Records());
              },),
      ),

1 ответ

Вам не хватает параметра для записей. Ваше решение - либо удалить

требуется this.records

или измените свой Navigator.pushк этому

       MaterialPageRoute(builder: (context) => Records(['']));
Другие вопросы по тегам