flutter 全选_Flutter设置中文报错解决办法

TextField长按后报错 The getter 'pasteButtonLabel' was called on null.

因为设置中文后TextField长按调用的cupertino语言配置,而flutter的cupertino_*.arb(flutter/packages/flutter_localizations/lib/src/l10n)文件只对英文进行了支持所以导致的报错。

解决办法自定义一个LocalizationsDelegate类来对cupertino做中文支持,直接上源码,如下:

///设置语言中文

locale = const Locale('zh', 'CN'),

localizationsDelegates = const [

GlobalMaterialLocalizations.delegate,

GlobalWidgetsLocalizations.delegate,

///自定义代理,见下段代码

CommonLocalizationsDelegate(),

],

supportedLocales = [

const Locale('en', 'US'),

const Locale('zh', 'CN'),

],

import 'package:flutter/cupertino.dart';

import 'package:flutter/foundation.dart';

///语言(主要解决cupertino控件不能显示中文的问题)

class CommonLocalizationsDelegate

extends LocalizationsDelegate {

const CommonLocalizationsDelegate();

@override

bool isSupported(Locale locale) =>

['zh', 'CN'].contains(locale.languageCode);

@override

SynchronousFuture<_defaultcupertinolocalizations> load(Locale locale) {

return SynchronousFuture<_defaultcupertinolocalizations>(

_DefaultCupertinoLocalizations(locale.languageCode));

}

@override

bool shouldReload(CommonLocalizationsDelegate old) => false;

}

class _DefaultCupertinoLocalizations extends CupertinoLocalizations {

_DefaultCupertinoLocalizations(this._languageCode)

: assert(_languageCode != null);

final String _languageCode;

static const List _shortWeekdays = [

'周一',

'周二',

'周三',

'周四',

'周五',

'周六',

'周日',

];

static const List _shortMonths = [

'一月',

'二月',

'三月',

'四月',

'五月',

'六月',

'七月',

'八月',

'九月',

'十月',

'十一月',

'十二月',

];

static const List _months = [

'一月',

'二月',

'三月',

'四月',

'五月',

'六月',

'七月',

'八月',

'九月',

'十月',

'十一月',

'十二月',

];

@override

String get alertDialogLabel => '提醒';

@override

String get anteMeridiemAbbreviation => "上午";

@override

String get postMeridiemAbbreviation => "下午";

@override

String get copyButtonLabel => "复制";

@override

String get cutButtonLabel => "剪切";

@override

String get pasteButtonLabel => "粘贴";

@override

String get selectAllButtonLabel => "全选";

@override

DatePickerDateOrder get datePickerDateOrder => DatePickerDateOrder.ymd;

@override

DatePickerDateTimeOrder get datePickerDateTimeOrder =>

DatePickerDateTimeOrder.date_time_dayPeriod;

@override

String datePickerDayOfMonth(int dayIndex) => dayIndex.toString();

@override

String datePickerHour(int hour) => hour.toString();

@override

String datePickerHourSemanticsLabel(int hour) => hour.toString();

@override

String datePickerMediumDate(DateTime date) {

return '${_shortWeekdays[date.weekday - DateTime.monday]} '

'${_shortMonths[date.month - DateTime.january]} '

'${date.day.toString().padRight(2)}';

}

@override

String datePickerMinute(int minute) => minute.toString().padLeft(2, '0');

@override

String datePickerMinuteSemanticsLabel(int minute) {

if (minute == 1) return '1 分钟';

return minute.toString() + ' 分钟';

}

@override

String datePickerMonth(int monthIndex) => _months[monthIndex - 1];

@override

String datePickerYear(int yearIndex) => yearIndex.toString();

@override

String timerPickerHour(int hour) => hour.toString();

@override

String timerPickerHourLabel(int hour) => '时';

@override

String timerPickerMinute(int minute) => minute.toString();

@override

String timerPickerMinuteLabel(int minute) => '分';

@override

String timerPickerSecond(int second) => second.toString();

@override

String timerPickerSecondLabel(int second) => '秒';

}

愿一切顺利,大家多多留言点赞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:根据您提供的引用内容,问题似乎与OpenCV和VS2019的兼容性有关。根据引用\[1\]中的描述,3.1.0版本的OpenCV可能无法兼容VS2019,因为在OpenCVConfig.cmake文件中没有适用于VS2019的MSVC_VERSION。这可能导致OpenCV_RUNTIME无法获取到值。为了解决这个问题,您可以尝试更新OpenCV的版本,或者查找适用于VS2019的补丁或解决方案。 引用\[2\]:根据您提供的引用内容,问题似乎与Flutter Boost的有关。根据引用\[2\]中的描述,信息显示了一个未处理的异常,并指出布尔表达式不能为空。根据堆栈跟踪,问题可能出现在FlutterBoostAppState.pop函数中。为了解决这个问题,您可以检查相关代码,确保布尔表达式不为空,并处理异常情况。 综上所述,根据您提供的引用内容,问题可能与OpenCV和VS2019的兼容性以及Flutter Boost的有关。您可以尝试更新OpenCV版本或查找适用于VS2019的解决方案,并检查相关代码以处理Flutter Boost的异常情况。 #### 引用[.reference_title] - *1* [CMake OpenCV_FOUND to FALSE so package “OpenCV“ is considered to be NOT FOUND | 九七的CMake...](https://blog.csdn.net/qq_42495740/article/details/118549198)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [flutter_boost container ==null ](https://blog.csdn.net/qq_17853651/article/details/123596905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值