Проблемы с компилятором Flushbar - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в виджете flushbar. Я строю простой пример кода, который приводит к следующим ошибкам компилятора после некоторых статей и видео на виджете. https://pub.dev/packages/flushbar

Большинство примеров зависят от события нажатия onPressed. В моем случае мне нужно выполнить некоторую обработку перед отображением сообщения панели сброса.

Я пробовал с обеими версиями: flushbar: ^ 1.10.0 flushbar: ^ 1.9.1

Не могли бы вы посоветовать, что запускается с кодом ниже?

Это ошибки компилятора:

Запуск задачи Gradle 'assemblyDebug' ... Сообщение компилятора: /C:/src/flutter/.pub- cache / hosted / pub.dartlang.org / flushbar-1.10.0 / lib / flushbar_route.dart: 303: 8: Ошибка: у метода «FlushbarRoute.install» меньше позиционных аргументов, чем у переопределенного метода «OverlayRoute.install». void install () {^ /C:/src/flutter/packages/flutter/lib/src/widgets/routes.dart:41:8: Контекст: это переопределенный метод ('install'). void install (OverlayEntry inserttionPoint) {^ /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/flushbar-1.10.0/lib/flushbar_route.dart:311:18: Ошибка: слишком несколько позиционных аргументов: 1 обязательно, 0 задано. super.install (); ^ Target kernel_snapshot fail: исключение: ошибки при создании снимка: нулевая сборка не удалась.

FAILURE: сборка не удалась с исключением.

  • Где: Script 'C: Строка \ src \ flutter \ packages \ flutter_tools \ gradle \ flutter.gradle ': 780

  • Что пошло не так: выполнение задачи не выполнено': app: compileFlutterBuildDebug '.

    Процесс 'команда' C: \ src \ flutter \ bin \ flutter.bat '' завершен с ненулевым значением выхода 1

Вот мой образец кода. Нет ошибок по синтаксису, но не удалось компиляции.

import 'package:flutter/material.dart';
import 'package:flushbar/flushbar.dart';

class MyHomePage extends StatefulWidget {
  MyHomePage();

  @override
  State<StatefulWidget> createState() {
    return _MyHomePage();
  }

}
class _MyHomePage extends State<MyHomePage> {
  int _selectedIndex = 2;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Flushbar')),
      body: Center(
          child:
          BottomNavigationBar(
            items: <BottomNavigationBarItem>[
              BottomNavigationBarItem(
                icon: Icon(Icons.today),
                title: Text('Today'), // Today button.
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.business ),
                title: Text('Activities'),  // Activities.
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.save),
                title: Text('Finish'), // Finish
              ),
            ],
            currentIndex: _selectedIndex,
            selectedItemColor: Colors.amber[800],
            onTap: _onItemTapped,
          )
      ),
    );
  }

  void _onItemTapped(int index) {
    setState(() {
      switch (index) {
        case 0:           // Today selected.
//          todayButtonPressed();
          break;
        case 1:           // Activity selected.
//          activityButtonPressed();
          break;
        case 2:           // Finish selected.
          finishButtonPressed();
          break;
      }
    });
  }

  void finishButtonPressed() async {
    // Processing record.
    // .....
    // ....
    displayFlushBar(context);
  }

  void displayFlushBar(BuildContext context) {
    Flushbar(
      title: 'Action',
      message: 'Is prohibited',
      icon: Icon(
        Icons.info_outline,
        size: 28,
        color: Colors.blue.shade300,
      ),
      leftBarIndicatorColor: Colors.blue.shade300,
      duration: Duration(seconds: 3),
    )..show(context);
  }
}

1 Ответ

0 голосов
/ 22 апреля 2020

Флаттер изменился, так как наложение было составлено в бета-версии / версии-мастер-версии, а флешбар был затронут. Я считаю, что они обновились до бета-версии, и тот, кто находится в стабильной версии, получает ошибку. Вы можете использовать репозиторий fork с path (как предложено chunhunghan) или перейти на другой плагин. Если вы выберете второй вариант, я рекомендую Получить, потому что помимо наличия всего, что есть у Flushbar, вы все равно сможете перемещаться между маршрутами, открывать диалоги без использования контекста. В вашем примере вам нужно было отправить контекст по параметру, с Get это не нужно.

class MyHomePage extends StatefulWidget {
  MyHomePage();

  @override
  State<StatefulWidget> createState() {
    return _MyHomePage();
  }

}
class _MyHomePage extends State<MyHomePage> {
  int _selectedIndex = 2;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Flushbar')),
      body: Center(
          child:
          BottomNavigationBar(
            items: <BottomNavigationBarItem>[
              BottomNavigationBarItem(
                icon: Icon(Icons.today),
                title: Text('Today'), // Today button.
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.business ),
                title: Text('Activities'),  // Activities.
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.save),
                title: Text('Finish'), // Finish
              ),
            ],
            currentIndex: _selectedIndex,
            selectedItemColor: Colors.amber[800],
            onTap: _onItemTapped,
          )
      ),
    );
  }

  void _onItemTapped(int index) {
    setState(() {
      switch (index) {
        case 0:           // Today selected.
//          todayButtonPressed();
          break;
        case 1:           // Activity selected.
//          activityButtonPressed();
          break;
        case 2:           // Finish selected.
          finishButtonPressed();
          break;
      }
    });
  }

  void finishButtonPressed() async {
    // Processing record.
    // .....
    // ....
    displayFlushBar();
  }

  void displayFlushBar() { // GET DONT NEED CONTEXT
    Get.snackbar(
      'Action',
      'Is prohibited',
      icon: Icon(
        Icons.info_outline,
        size: 28,
        color: Colors.blue.shade300,
      ),
      leftBarIndicatorColor: Colors.blue.shade300,
      duration: Duration(seconds: 3),
    ); // GET DONT NEED SHOW METHOD
  }
}

ссылка lib https://pub.dev/packages/get

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...