Flutter默认中文

在yaml中配置

dependencies:
  flutter_localizations:
    sdk: flutter

在入口main.dart中的MaterialApp中,加入localizationsDelegates和supportedLocales即可。
示例如下:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
     // home: jumpTo(),你自己的widget
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: [const Locale('zh', 'CH')],
    );
  }
}
### 实现仅对中文字符进行编码 为了实现在 Flutter 中只对 URL 或者其他字符串中的中文字符进行编码而不影响其他特殊字符,可以编写自定义函数来遍历字符串并对特定条件下的字符执行编码操作。 对于 URLEncoder.encode() 方法来说,默认情况下会对所有非字母数字字符进行百分号编码。为了避免不必要的编码,特别是针对已经具有语义意义的 URL 特殊字符(如 `=` 和 `&`),应当设计一种机制能够识别并单独处理中文字符[^1]。 ```dart import 'dart:convert'; String encodeChineseOnly(String input) { List<String> encodedParts = []; for (int i = 0; i < input.length; i++) { String char = input[i]; // Check if the character is a Chinese character using Unicode range. bool isChineseChar = RegExp(r'[\u4e00-\u9fff]').hasMatch(char); if (isChineseChar) { // Only encode when it's a Chinese character. var codeUnits = utf8.encode(char).map((unit) => '%${unit.toRadixString(16).toUpperCase().padLeft(2, '0')}'); encodedParts.add(codeUnits.join()); } else { // Leave other characters as they are. encodedParts.add(char); } } return encodedParts.join(); } ``` 此 Dart 函数会逐个检查输入字符串里的每一个字符是否属于汉字范围内的字符(依据其 Unicode 编码)。如果是,则调用 UTF-8 编码器将其转换成相应的十六进制表示形式;如果不是,则保持原样不变。最终返回经过适当编码后的结果字符串。 当涉及到解码过程时,由于标准库提供的 Uri.decodeComponent 可以很好地处理由上述方法产生的编码串,因此不需要额外定制逻辑: ```dart // Decoding can be done simply with this function provided by dart:core library. var decodedStr = Uri.decodeComponent(encodedStr); ``` 这种方法确保了只有中文字符会被特别对待而其余部分维持原有状态,从而解决了原始问题中提到的情况——即不希望某些预设功能强大的工具类无差别地改变整个字符串结构的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值