国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Flutter中系統(tǒng)Emoji通過substring裁切后無法識別導致渲染錯誤

這篇具有很好參考價值的文章主要介紹了Flutter中系統(tǒng)Emoji通過substring裁切后無法識別導致渲染錯誤。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

場景

  1. 在發(fā)布文章的時候,有標題和內容,標題可為空,在沒有標題的情況下,截取部分內容當作標題。
  2. 內容列表顯示的時候,某些特殊的情況下(并不重要),我們就需要裁切文章標題。
  3. 當文章標題中有文字 + 系統(tǒng)自帶的 emoji 的時候,我們去裁切標題就會出現(xiàn)無法識別渲染出來亂碼的情況。

如下:
Flutter中系統(tǒng)Emoji通過substring裁切后無法識別導致渲染錯誤,flutter

import 'package:flutter/material.dart';

class SubStringSystemIcon extends StatefulWidget {
  const SubStringSystemIcon({super.key});

  
  State<SubStringSystemIcon> createState() => _SubStringSystemIconState();
}

class _SubStringSystemIconState extends State<SubStringSystemIcon> {
  
  Widget build(BuildContext context) {
    const iconString = '????????';
    const textString = '系統(tǒng)表情';
    return Scaffold(
      appBar: AppBar(
        title: const Text('字符串截取系統(tǒng)表情包出現(xiàn)錯誤問題'),
      ),
      body: Center(
        child: Column(
          children: [
            Text(
              textString + iconString.substring(0, 3),
            ),
          ],
        ),
      ),
    );
  }
}

分析/思考

尋找神馬東西引起的渲染錯誤

思考(1)
遇到渲染錯誤的情況我第一時間想到的是這個emoji識別不出來,導致的顯示出錯。

tip:在 Flutter 輸入框中以蘋果的數(shù)字圖標 1 2 3 4 5 6 7 8 9 0 為開頭的內容,輸入到輸入框中就會導致后續(xù)的所有字符都無法識別。

想要了解的可以看這個 Flutter issues 11517

然后我測試了這個文章的標題完全顯示出來的情況下,會不會出現(xiàn)這種情況。
Flutter中系統(tǒng)Emoji通過substring裁切后無法識別導致渲染錯誤,flutter

class _SubStringSystemIconState extends State<SubStringSystemIcon> {
  
  Widget build(BuildContext context) {
    const iconString = '????????';
    const textString = '系統(tǒng)表情';
    return Scaffold(
      appBar: AppBar(
        title: const Text('字符串截取系統(tǒng)表情包出現(xiàn)錯誤問題'),
      ),
      body: Center(
        child: Column(
          children: [
            Text(textString + iconString),
          ],
        ),
      ),
    );
  }
}

結果不是因為無法識別。在測試demo中顯示全部標題是完全沒有問題的,都可以顯示。

思考(2)
全部顯示沒有問題,第一時間,我就想到了,是因為 substring 導致的錯誤。
我就試著打印出標題的全部長度后,一下子發(fā)現(xiàn)了問題的所在。
Flutter中系統(tǒng)Emoji通過substring裁切后無法識別導致渲染錯誤,flutter

為什么 substring 之后就無法顯示了

我們可以到我們打印的字符串的長度后會發(fā)現(xiàn),每個 emoji 的長度是2
這樣讓我想到了,tips中提到的 issues,蘋果的數(shù)字 emoji 長度是3
Flutter中系統(tǒng)Emoji通過substring裁切后無法識別導致渲染錯誤,flutter

結論

一個emoji 的長度是2 或者 3,那么我們 substring 的時候,就會特殊情況下把emoji裁切了一半的情況。這樣就會導致顯示錯誤。

分析 substring

我們知道一個字符的長度是1,那么為什么emoji的字符長度不是1。
我試著打印出了他們的 unicode 發(fā)現(xiàn)了有意思的東西。
Flutter中系統(tǒng)Emoji通過substring裁切后無法識別導致渲染錯誤,flutter
發(fā)現(xiàn)沒有,emoji 是多個 unicode 的值組成(UTF-32格式)而 substring 裁切的的時候,識別每一個 unicode 值為一個字符。所以就出現(xiàn)了,某下情況下使用substring裁切帶emoji的字符串的時候,就會出現(xiàn)渲染錯誤的問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-697560.html

到了這里,關于Flutter中系統(tǒng)Emoji通過substring裁切后無法識別導致渲染錯誤的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 前端vue中ts無法識別引入的vue文件,提示找不到xxx.vue模塊的解決【引入新建頁面或者通過router引入時報錯】

    前端vue中ts無法識別引入的vue文件,提示找不到xxx.vue模塊的解決【引入新建頁面或者通過router引入時報錯】

    ?? 博客首頁: 水香木魚 ?? 專欄收錄:后臺管理系統(tǒng) ?? 文章摘要: vue ? typescript ? vite ?? 木魚寄語: 故木秀于林,風必摧之;堆出于岸,流必湍之;行高于人,眾必非之。 提示找不到模塊問題 ?? 解決方案: 在 src 目錄下, vite-env.d.ts 文件內新增如下代碼: 在 tsco

    2024年02月13日
    瀏覽(17)
  • U盤重裝MAC OS遇到 無法識別文件系統(tǒng)和磁盤無法讀取問題

    一臺windows的電腦,一個差不多夠大的U盤我這里差不多用了13G左右。 .dmg文件好難搞,不是難下,是下載轉載后無法識別,所以很需要 帶引導的os文件. 一個windows下dmg鏡像恢復工具,這里用的是TransMac 10.4 ,沒有注冊碼沒事,有15天體驗期。 1.插入U盤或其他存儲設備 2.以管理員

    2024年02月21日
    瀏覽(24)
  • Xubuntu16.04系統(tǒng)中解決無法識別exFAT格式的U盤

    Xubuntu16.04系統(tǒng)中解決無法識別exFAT格式的U盤

    將exFAT格式的U盤插入到Xubuntu16.04系統(tǒng)中,發(fā)現(xiàn)系統(tǒng)可以識別到此U盤,但是打不開,查詢后發(fā)現(xiàn)需要安裝 exfat-utils 庫才行。 1.設備有網(wǎng)絡的情況下 直接安裝 exfat-utils 庫即可 2.設備無網(wǎng)絡的情況下(需要拷貝相關的安裝包到目標設備上進行安裝) 首先在有網(wǎng)的設備上下載 exf

    2024年02月09日
    瀏覽(25)
  • 華碩ASUS:解決Win10重裝系統(tǒng)后無法通過微軟商店安裝華碩管家的問題

    華碩ASUS:解決Win10重裝系統(tǒng)后無法通過微軟商店安裝華碩管家的問題

    目錄 1.問題 2.解決 ? ? ?今天重裝了系統(tǒng),重裝了各種驅動后,發(fā)現(xiàn)屏幕亮度依然無法調節(jié)(Fn + F7 按了能出指示但是屏幕亮度沒變),以及性能模式無法改變,得,肯定還是驅動問題。 ? ? ?于是我繼續(xù)尋找華碩的各種驅動 ? ? ?第一個是華碩的官網(wǎng)? ? ? https://www.asus.co

    2024年02月14日
    瀏覽(257)
  • Flutter通過flutter_unity_widget嵌入Unity3D

    Flutter通過flutter_unity_widget嵌入Unity3D

    實現(xiàn)方案:采用flutter開源組件flutter_unity_widget 1、創(chuàng)建flutter項目flutter_unity_demo 2、在pubspec.paml文件dependencies添加flutter_unity_widget: ^2022.2.0,執(zhí)行Pub?get導入組件 3、在工程目錄下創(chuàng)建unity文件夾 4、在unity目錄下創(chuàng)建unity_demo的3D工程 5、下載flutter_unity_widget提供的unity插件 在unity_d

    2024年02月11日
    瀏覽(26)
  • ffmpeg 實用命令 -- 縮放與裁切

    縮放 縮放是一個常見的需求,這需要使用到 FFmpeg 提供的視頻過濾器(或稱視頻濾鏡,video filter),也即? -vf ?參數(shù)。由于過濾器的使用過于復雜,在此也不會詳細介紹;這里只是針對過濾器中的縮放器(scaler)功能進行說明??s放器還有許多復雜的用法詳情也可以參考官方

    2024年01月24日
    瀏覽(13)
  • flutter學習-day22-使用GestureDetector識別手勢事件

    在 flutter 中,GestureDetector 是手勢識別的組件,可以識別點擊、雙擊、長按、拖動、縮放等手勢事件,并且可以與子組件進行交互,構造函數(shù)屬性如下: GestureDetector 內部封裝了 Listener,用以識別語義化的手勢。 當同時監(jiān)聽 onTap 和 onDoubleTap 事件時,當用戶觸發(fā) tap 事件時,會

    2024年02月03日
    瀏覽(31)
  • 微信小程序 Canvas裁切案例

    微信小程序 Canvas裁切案例

    源于 https://ask.csdn.net/questions/7797682 效果 輸入 輸出 環(huán)境 基礎庫版本 2.20.x使用的新版的canvas(也不算新兩三年了)。 知識點 canvas base64轉臨時路徑 代碼 index.wxml index.wxss index.js 重點 代碼沒有進行封裝,僅僅只是方便預覽 源碼 完整代碼片段 https://developers.weixin.qq.com/s/ERW91Dma7QCP 私

    2024年02月09日
    瀏覽(20)
  • flutter 通過打包參數(shù)區(qū)分來 打內網(wǎng) 外網(wǎng)包

    flutter 通過打包參數(shù)區(qū)分來 打內網(wǎng) 外網(wǎng)包

    ? 內網(wǎng) 外網(wǎng) env.dart 然后代碼里面使用?EnvironmentConfig 做api 地址處理 最后執(zhí)行不同打包shell 打不同環(huán)境的包

    2024年01月19日
    瀏覽(15)
  • Flutter 運行IOS真機,提示無法打開“iproxy”,因為無法驗證開發(fā)者

    Flutter 運行IOS真機,提示無法打開“iproxy”,因為無法驗證開發(fā)者

    Flutter 運行IOS真機,提示無法打開“iproxy”。如下圖: 在終端輸入一下命令行 + flutter SDK路徑(/Users/xxx/flutter/bin/cache/artifacts/usbmuxd/iproxy) ?如:

    2024年02月08日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包