У меня есть флаттер-код, в котором первым виджетом является слайдер-карусель. Все работало нормально, пока я не обновил флаттер. Теперь он показывает следующую ошибку
/C:/Users/Family/AppData/Local/Pub/Cache/hosted/pub.dev/carousel_slider-4.2.1/lib/carousel_slider.dart:9:1: Error: 'CarouselController' is imported from both 'package:carousel_slider/carousel_controller.dart' and 'package:flutter/src/material/carousel.dart'.
import 'carousel_controller.dart';
^^^^^^^^^^^^^^^^^^
/C:/Users/Family/AppData/Local/Pub/Cache/hosted/pub.dev/carousel_slider-4.2.1/lib/carousel_slider.dart:48:15: Error: 'CarouselController' is imported from both 'package:carousel_slider/carousel_controller.dart' and 'package:flutter/src/material/carousel.dart'.
: CarouselController() as CarouselControllerImpl,
^^^^^^^^^^^^^^^^^^
/C:/Users/Family/AppData/Local/Pub/Cache/hosted/pub.dev/carousel_slider-4.2.1/lib/carousel_slider.dart:62:15: Error: 'CarouselController' is imported from both 'package:carousel_slider/carousel_controller.dart' and 'package:flutter/src/material/carousel.dart'.
: CarouselController() as CarouselControllerImpl,
^^^^^^^^^^^^^^^^^^
Target kernel_snapshot_program failed: Exception
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.
> Process 'command 'D:\Apps\flutter\bin\flutter.bat'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 9s
Я попытался скрыть CarouselController из пакета Material.dart, но он все равно показывает то же самое.
Ниже приведен мой код
import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter/material.dart' hide CarouselController;
import 'package:reema_swad_cooking_class/bottomnavigationbar.dart';
import 'package:reema_swad_cooking_class/calendar.dart';
import 'package:reema_swad_cooking_class/coursedescription.dart';
import 'courselist.dart';
import 'sololist.dart';
import 'appbar.dart';
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<StatefulWidget> createState() {
return _HomeScreen();
}
}
class _HomeScreen extends State<HomeScreen> {
static final GlobalKey<ScaffoldState> _scaffoldKey =
GlobalKey<ScaffoldState>();
var selectedPage = 0;
CarouselController buttonCarouselController = CarouselController();
String getCourseIdFromImageName(String imageName) {
String courseId = imageName.replaceAll(RegExp(r'[^0-9]'), '');
return courseId;
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
appBar: const CustomAppBar(),
bottomNavigationBar: const CustomBottomNavigationBar(),
body: SingleChildScrollView(
child: Column(
children: [
const Padding(
padding: EdgeInsets.only(top: 16.0, right: 16, left: 16),
child: Row(
children: [
Expanded(
child: Text(
'Upcoming Classes',
style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
),
),
),
],
),
),
LayoutBuilder(builder: (context, constraints) {
double aspectRatio = 16 / 9;
double containerHeight = constraints.maxWidth / aspectRatio;
return SizedBox(
width: constraints.maxWidth,
height: containerHeight,
child: CarouselSlider(
options: CarouselOptions(
height: double.infinity,
autoPlay: true,
autoPlayInterval: const Duration(seconds: 4),
enableInfiniteScroll: true,
viewportFraction: 0.95,
enlargeCenterPage: true,
),
а затем остальная часть моего кода. Если также потребуется остальная часть кода, я отредактирую вопрос, чтобы добавить его.
Проблема в самой упаковке carousel_slider
. Вы ничего не можете сделать, чтобы исправить эту проблему внутри вашего собственного кода, и ее нужно решать в самом пакете, и кажется, что они именно так и сделали, как 4 дня назад выпустили версию 5.0.0
, решающую проблему путем переименования контроллера. См. https://pub.dev/packages/carousel_slider/changelog.
Так что вам просто нужно использовать последнюю версию
Вам следует обновить carousel_slider ^5.0.0.
[ИСПРАВЛЕНО] Переименуйте CarouselController в CarouselSliderController
В этой версии вам следует заменить CarouselController на CarouselSliderController.
CarouselSliderController buttonCarouselController = CarouselSliderController();
В любом случае, используя
import 'package:flutter/material.dart' hide CarouselController;
тоже должно работать. Я попробовал это на своей стороне, и это работает. Возможно, вам нужно перезапустить IDE.