Flutter在LaunchScreen顯示版本號

danger同學發表於2019-11-14

背景

       今天接到需求要在LaunchScreen顯示版本號,然額,LaunchScreen.stortboard 裡面的文字必須是靜態的,每次在pubspec.yaml修改版本號後還要手動修改LaunchScreen.stortboard,打包幾次後決定將其做成自動化的。

複製程式碼

思路

參考了stackoverflow的思路,不過又和純ios專案不太一樣,指令碼打算用dart 來寫。基本就是讀取pubspec.yaml檔案中的版本號,然後替換LaunchScreen.stortboard檔案

步驟

1.新增程式碼

Flutter在LaunchScreen顯示版本號

replace_launch_screen.dart

import 'dart:io';
main() {  
    File launchScreenFile = File("../ios/Runner/Base.lproj/LaunchScreen.storyboard");  
    File pubSpecFile = File("../pubspec.yaml"); 
    
     // 1.從pubspec讀取版本號  
    String pubSpecFileContent = pubSpecFile.readAsStringSync();  
    RegExp versionReg = new RegExp("[\r\n]\\s*version:\\s*(\\S+)\\+(\\d+)");  
    RegExpMatch versionMatch = versionReg.firstMatch(pubSpecFileContent);  
    print(versionMatch.group(1) + ":" + versionMatch.group(2));  
   
     // 2.從lauchScreen獲取替換字串  
    String launchScreenFileContent = launchScreenFile.readAsStringSync();  
    // print(launchScreenFileContent);  
    RegExp versionTextReg = new RegExp('text="\\S+"');  
    RegExpMatch versionTextMatch = versionTextReg.firstMatch(launchScreenFileContent);  
    // print(versionReg.hasMatch(launchScreenFileContent));  
    print(versionTextMatch.group(0));  
    String strToBeReplaced = versionTextMatch.group(0);  
    String replacedLacunchScreen = launchScreenFileContent.replaceFirst(versionTextReg, "text=\"${versionMatch.group(1)}\"");  
    launchScreenFile.writeAsString(replacedLacunchScreen, mode: FileMode.writeOnly);
}
複製程式碼

2.xcode專案新增執行

Flutter在LaunchScreen顯示版本號

Flutter在LaunchScreen顯示版本號

"$FLUTTER_ROOT/bin/cache/dart-sdk/bin/dart" ../scripts/replace_launch_screen.dart 複製程式碼

說明:

    總體來說程式碼簡單,步驟也不復雜,不過用dart 來替換,和專案程式碼保持統一了,通俗易懂,需要的可以參考一下。


相關文章