【发布时间】:2021-04-05 08:48:40
【问题描述】:
正如您在图片中看到的,当我尝试在文本字段中双击以显示复制粘贴对话框时,它会在终端中显示此问题
'
══════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The getter 'pasteButtonLabel' was called on null.
Receiver: null
Tried calling: pasteButtonLabel
The relevant error-causing widget was:
MaterialApp file:///Users/home/Desktop/the%20authentic%20home%20final/theauthentichome/lib/main.dart:136:22
════════════════════════════════════════════════════════════════════════════════════════════════════'
希望您查看以下图片以更好地了解该问题。
The main.dart file :
'import 'dart:async';
import 'dart:io';
import 'package:admob_flutter/admob_flutter.dart';
import 'package:flutterstore/config/router.dart' as router;
import 'package:dynamic_theme/dynamic_theme.dart';
import 'package:flutterstore/provider/ps_provider_dependencies.dart';
import 'package:flutterstore/viewobject/common/language.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/single_child_widget.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutterstore/config/ps_theme_data.dart';
import 'package:flutterstore/provider/common/ps_theme_provider.dart';
import 'package:flutterstore/repository/ps_theme_repository.dart';
import 'package:flutterstore/utils/utils.dart';
import 'package:easy_localization/easy_localization.dart';
import 'config/ps_colors.dart';
import 'config/ps_config.dart';
import 'db/common/ps_shared_preferences.dart';
Future<void> main() async {
// add this, and it should be the first line in main method
WidgetsFlutterBinding.ensureInitialized();
final FirebaseMessaging _fcm = FirebaseMessaging();
if (Platform.isIOS) {
_fcm.requestNotificationPermissions(const IosNotificationSettings());
}
final SharedPreferences prefs = await SharedPreferences.getInstance();
if (prefs.getString('codeC') == null) {
await prefs.setString('codeC', null);
await prefs.setString('codeL', null);
}
Admob.initialize(Utils.getAdAppId());
//check is apple signin is available
await Utils.checkAppleSignInAvailable();
runApp(EasyLocalization(
path: 'assets/langs',
startLocale: PsConfig.defaultLanguage.toLocale(),
supportedLocales: getSupportedLanguages(),
child: PSApp()));
}
List<Locale> getSupportedLanguages() {
final List<Locale> localeList = <Locale>[];
for (final Language lang in PsConfig.psSupportedLanguageList) {
localeList.add(Locale(lang.languageCode, lang.countryCode));
}
print('Loaded Languages');
return localeList;
}
class PSApp extends StatefulWidget {
@override
_PSAppState createState() => _PSAppState();
}
Future<dynamic> initAds() async {
if (PsConfig.showAdMob && await Utils.checkInternetConnectivity()) {
// FirebaseAdMob.instance.initialize(appId: Utils.getAdAppId());
}
}
class _PSAppState extends State<PSApp> {
Completer<ThemeData> themeDataCompleter;
PsSharedPreferences psSharedPreferences;
@override
void initState() {
super.initState();
}
Future<ThemeData> getSharePerference(
EasyLocalization provider, dynamic data) {
Utils.psPrint('>> get share perference');
if (themeDataCompleter == null) {
Utils.psPrint('init completer');
themeDataCompleter = Completer<ThemeData>();
}
if (psSharedPreferences == null) {
Utils.psPrint('init ps shareperferences');
psSharedPreferences = PsSharedPreferences.instance;
Utils.psPrint('get shared');
psSharedPreferences.futureShared.then((SharedPreferences sh) {
psSharedPreferences.shared = sh;
Utils.psPrint('init theme provider');
final PsThemeProvider psThemeProvider = PsThemeProvider(
repo: PsThemeRepository(psSharedPreferences: psSharedPreferences));
Utils.psPrint('get theme');
final ThemeData themeData = psThemeProvider.getTheme();
themeDataCompleter.complete(themeData);
Utils.psPrint('themedata loading completed');
});
}
return themeDataCompleter.future;
}
List<Locale> getSupportedLanguages() {
final List<Locale> localeList = <Locale>[];
for (final Language lang in PsConfig.psSupportedLanguageList) {
localeList.add(Locale(lang.languageCode, lang.countryCode));
}
print('Loaded Languages');
return localeList;
}
@override
Widget build(BuildContext context) {
// init Color
PsColors.loadColor(context);
return MultiProvider(
providers: <SingleChildWidget>[
...providers,
],
child: DynamicTheme(
defaultBrightness: Brightness.light,
data: (Brightness brightness) {
if (brightness == Brightness.light) {
return themeData(ThemeData.light());
} else {
return themeData(ThemeData.dark());
}
},
themedWidgetBuilder: (BuildContext context, ThemeData theme) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'مفرشي',
theme: theme,
initialRoute: '/',
onGenerateRoute: router.generateRoute,
localizationsDelegates: <LocalizationsDelegate<dynamic>>[
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
EasyLocalization.of(context).delegate,
],
supportedLocales: EasyLocalization.of(context).supportedLocales,
locale: EasyLocalization.of(context).locale,
);
}));
}
}'
参考图片:
【问题讨论】:
标签: ios flutter dart flutter-layout