Flutter应用仅iPad出现Null check operator空值错误求助
Flutter iPad端出现「Null check operator used on a null value」错误
我是Flutter新手,开发的应用在iPhone上运行正常,但在iPad端触发了「Null check operator used on a null value」错误。错误由FutureBuilder<Object?>引发,栈追踪显示问题根源在course_details_screen.dart的451行unPurchasedCourseDetails方法。
错误详情
========= 组件库捕获异常 =======================================================
构建FutureBuilder<Object?>(dirty, state: _FutureBuilderState<Object?>#11868)时抛出_TypeError:
Null check operator used on a null value
相关错误组件
FutureBuilder<Object?>,路径:file:///Volumes/Data%201/Elmasria_App_2/user_App/lib/Screens/course_details_screen.dart:667:12
错误栈追踪(部分)
#0 _CourseDetailScreenState.unPurchasedCourseDetails (package:eclass/Screens/course_details_screen.dart:451:107) #1 _CourseDetailScreenState.detailsSection (package:eclass/Screens/course_details_screen.dart:1062:15) #2 _CourseDetailScreenState.scaffoldBody.<anonymous closure> (package:eclass/Screens/course_details_screen.dart:678:17) #3 _FutureBuilderState.build (package:flutter/src/widgets/async.dart:612:55)
_app.dart代码
import 'package:eclass/Screens/blog_list_screen.dart'; import 'package:eclass/Screens/terms_policy.dart'; import 'package:eclass/localization/language_screen.dart'; import 'package:eclass/player/offline/downloads_screen.dart'; import 'package:eclass/provider/InstituteDetailsProvider.dart'; import 'package:eclass/provider/blog_provider.dart'; import 'package:eclass/localization/language_provider.dart'; import 'package:eclass/provider/InstituteProvider.dart'; import 'package:eclass/provider/compareCourseProvider.dart'; import 'package:eclass/provider/currenciesProvider.dart'; import 'package:eclass/provider/manual_payment_provider.dart'; import 'package:eclass/provider/terms_policy_provider.dart'; import 'package:eclass/provider/walletDetailsProvider.dart'; import 'package:eclass/provider/watchlist_provider.dart'; import 'package:eclass/screens/compare_course_screen.dart'; import 'package:eclass/screens/currency_screen.dart'; import 'package:eclass/screens/wallet_screen.dart'; import 'package:firebase_analytics/firebase_analytics.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_translate/flutter_translate.dart'; import 'Screens/loading_screen.dart'; import 'gateways/donate.dart'; import 'provider/cart_provider.dart'; import 'provider/content_provider.dart'; import 'provider/course_details_provider.dart'; import 'provider/recent_course_provider.dart'; import 'Screens/faq_screen.dart'; import 'Screens/instructor_faq_screen.dart'; import 'Screens/about_us_screen.dart'; import 'Screens/became_instructor_screen.dart'; import 'Screens/bundle_detail_screen.dart'; import 'Screens/category_screen.dart'; import 'Screens/child_category_screen.dart'; import 'Screens/contact_us_screen.dart'; import 'Screens/course_details_screen.dart'; import 'Screens/course_instructor_screen.dart'; import 'Screens/courses_screen.dart'; import 'Screens/edit_profile.dart'; import 'Screens/filter_screen.dart'; import 'Screens/forgot_password.dart'; import 'Screens/home_screen.dart'; import 'Screens/sign_in_screen.dart'; import 'Screens/notification_detail_screen.dart'; import 'Screens/notifications_screen.dart'; import 'Screens/purchase_history_screen.dart'; import 'Screens/sign_up_screen.dart'; import 'Screens/sub_category_screen.dart'; import 'provider/bundle_course.dart'; import 'provider/cart_pro_api.dart'; import 'provider/filter_pro.dart'; import 'provider/home_data_provider.dart'; import 'provider/payment_api_provider.dart'; import 'provider/visible_provider.dart'; import 'provider/wish_list_provider.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'provider/courses_provider.dart'; import 'provider/user_details_provider.dart'; import 'common/theme.dart' as T; import 'provider/user_profile.dart'; // ignore: must_be_immutable class MyApp extends StatelessWidget { String? token; MyApp(this.token); // This widget is the root of your application. static FirebaseAnalytics analytics = FirebaseAnalytics.instance; static FirebaseAnalyticsObserver observer = FirebaseAnalyticsObserver(analytics: analytics); @override Widget build(BuildContext context) { var localizationDelegate = LocalizedApp.of(context).delegate; return MultiProvider( providers: [ ChangeNotifierProvider( create: (_) => UserDetailsProvider()), // Fetch User Details ChangeNotifierProvider(create: (_) => T.Theme()), // Theme Data ChangeNotifierProvider(create: (_) => UserProfile()), ChangeNotifierProvider(create: (_) => WishListProvider()), ChangeNotifierProvider(create: (_) => CoursesProvider()), ChangeNotifierProvider(create: (_) => CartProducts()), ChangeNotifierProvider(create: (_) => FilterDetailsProvider()), ChangeNotifierProvider(create: (_) => BundleCourseProvider()), ChangeNotifierProvider(create: (_) => HomeDataProvider()), ChangeNotifierProvider(create: (_) => Visible()), ChangeNotifierProvider(create: (_) => RecentCourseProvider()), ChangeNotifierProvider(create: (_) => PaymentAPIProvider()), ChangeNotifierProvider(create: (_) => ContentProvider()), ChangeNotifierProvider(create: (_) => CourseDetailsProvider()), ChangeNotifierProvider(create: (_) => BlogProvider()), ChangeNotifierProvider(create: (_) => CartProvider()), ChangeNotifierProvider(create: (_) => LanguageProvider()), ChangeNotifierProvider(create: (_) => TermsPolicyProvider()), ChangeNotifierProvider(create: (_) => WatchlistProvider()), ChangeNotifierProvider(create: (_) => ManualPaymentProvider()), ChangeNotifierProvider(create: (_) => InstituteProvider()), ChangeNotifierProvider(create: (_) => InstituteDetailsProvider()), ChangeNotifierProvider(create: (_) => CompareCourseProvider()), ChangeNotifierProvider(create: (_) => WalletDetailsProvider()), ChangeNotifierProvider(create: (_) => CurrenciesProvider()), ], child: LocalizationProvider( state: LocalizationProvider.of(context).state, child: MaterialApp( navigatorObservers: <NavigatorObserver>[observer], localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, localizationDelegate ], supportedLocales: localizationDelegate.supportedLocales, locale: localizationDelegate.currentLocale, home: token == null ? SignInScreen() : LoadingScreen(token), debugShowCheckedModeBanner: false, theme: ThemeData(fontFamily: 'Mada'), routes: { '/SignIn': (context) => SignInScreen(), '/courseDetails': (context) => CourseDetailScreen(), '/InstructorScreen': (context) => CourseInstructorScreen(), '/homeScreen': (context) => HomeScreen(), '/CoursesScreen': (context) => CoursesScreen(), '/signUp': (context) => SignUpScreen(), '/category': (context) => CategoryScreen(), '/subCategory': (context) => SubCategoryScreen(), '/childCategory': (context) => ChildCategoryScreen(), '/forgotPassword': (context) => ForgotPassword(), '/editProfile': (context) => EditProfile(), "/bundleCourseDetail": (context) => BundleDetailScreen(), "/filterScreen": (context) => FilterScreen(), '/notifications': (context) => NotificationScreen(), '/becameInstructor': (context) => BecomeInstructor(), '/aboutUs': (context) => AboutUsScreen(), '/purchaseHistory': (context) => PurchaseHistoryScreen(), '/contactUs': (context) => ContactUsScreen(), '/notificationDetail': (context) => NotificationDetail(), '/userFaq': (context) => FaqScreen(), '/instructorFaq': (context) => InstructorFaqScreen(), '/blogList': (context) => BlogListScreen(), '/languageScreen': (context) => LanguageScreen(), '/termsPolicy': (context) => TermsPolicy(), '/donate': (context) => Donate(), '/downloads': (context) => DownloadsScreen(), '/currency': (context) => CurrencyScreen(), '/compare': (context) => CompareCourseScreen(), '/wallet': (context) => WalletScreen(), }, ), ), ); } }
内容的提问来源于stack exchange,提问作者shereif Nour
相关产品推荐
相关产品推荐

