In my flutter app, when trying to replace number to some chars in RTL languages , result producing wrong output

Code:

  //orignal : Tell to %1$s why you need to cancel
  String arabic = "  أخبر 345_980 لماذا تحتاج إلى إلغاء";
  String tamil = "345_980 க்கு நீங்கள் ஏன் ரத்து செய்ய வேண்டும் என்று சொல்லுங்கள்";
  arabic = arabic.replaceAll("345_980","%1\$s");
  tamil = tamil.replaceAll("345_980","%1\$s");

  print (arabic);
  print(tamil);

Output:

  أخبر %1$s لماذا تحتاج إلى إلغاء
  %1$s க்கு நீங்கள் ஏன் ரத்து செய்ய வேண்டும் என்று சொல்லுங்கள்


Now note the arabic output and Tamil output .

In Tamil , the number 345_980 correctly replaced with %1$s

But in Arabic , the replacement is أخبر %1$s which is wrong

I need like (expected) لماذا تحتاج إلى إلغاء z%1$s أخبر (exclude z,can't delete!!!)

Why this happening ?

Issues in Arabic and Persian (Urdu and hebrew is correct[%1$s کو بتائیں کہ آپ کو منسوخ کرنے کی ضرورت کیوں ہے])

How to fix this and get expected output ?