Проблемы с компилятором 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 InsertPoint) { ^ /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/flushbar-1.10.0/lib/flushbar_route.dart:311:18: Ошибка: слишком мало позиционных аргументы: 1 требуется, 0 дано. super.install(); ^ Ошибка целевого снимка_ядра: Исключение: Ошибки при создании снимка: сбой нулевой сборки.
ОШИБКА: сбой при сборке за исключением.
Где: Строка скрипта 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);
}
}
2 ответа
Это известная проблема наflushbar 1.10.0
как указано в этом билете . Проблема была исправлена начиная с Flutter 1.17. Обновление Flutter SDK должно решить проблему, запуститеflutter upgrade
на вашем терминале, чтобы обновить установленный Flutter SDK.
Flutter изменился, так как оверлей был создан в версии Beta / Dev / Master, и это повлияло на Flushbar. Я считаю, что они обновились до бета-версии, и тот, кто находится в стабильной версии, получает ошибку. Вы можете выбрать использование репозитория вилки с путем (как предлагает 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
}
}
ссылка на библиотеку https://pub.dev/packages/get