Приложение Flutter не применяет макет RTL даже после установки направления и локализацииAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Приложение Flutter не применяет макет RTL даже после установки направления и локализации

Сообщение Anonymous »

Вопрос:
Я пытаюсь сделать свое приложение Flutter полностью RTL (справа), но независимо от того, что я делаю, приложение остается LTR (слева направо). Я попробовал несколько методов, в том числе:
1. Установка локализации: locale ('fa', 'ir') в materialapp.router
2. Использование направления (TextDirection: TextDirection.rtl) в строительном построении
3. Добавление необходимых делегатов локализации (Flutter_localizations)
4. Обеспечение того, чтобы моя тема и стили текста были правильно настроены < /p>
Тем не менее, приложение не изменяется на RTL. Вот мой код: < /p>
main.dart:
void main() {
runApp(ProviderScope(child: MainWidget()));
}
< /code>
main_widget.dart:
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:go_router/go_router.dart';

class MainWidget extends ConsumerWidget {
const MainWidget({super.key});

@override
Widget build(BuildContext context, WidgetRef ref) {
final goRouter = ref.watch(goRouterProvider);

return MaterialApp.router(
routerConfig: goRouter,
debugShowCheckedModeBanner: false,

// Localization settings
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],

supportedLocales: const [
Locale('fa', 'IR'), // Persian (Farsi)
],
locale: const Locale('fa', 'IR'),

// Theme settings
theme: ThemeData(
fontFamily: 'Vazir',
useMaterial3: true,
textTheme: const TextTheme(
bodyLarge: TextStyle(fontSize: 18),
bodyMedium: TextStyle(fontSize: 16),
bodySmall: TextStyle(fontSize: 14),
),
),

// Ensuring RTL layout globally
builder: (context, child) {
return Directionality(
textDirection: TextDirection.rtl,
child: child!,
);
},
);
}
}
< /code>
Пакеты, которые я использую: < /p>
dependencies:
flutter:
sdk: flutter
flutter_riverpod: ^2.6.1
go_router: ^14.8.0
retrofit: ^4.4.2
dio: ^5.8.0+1
dio_http_formatter: ^3.3.0
freezed_annotation: ^2.4.4
json_annotation: ^4.9.0
intl: ^0.19.0
flutter_secure_storage: ^9.2.4

dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^5.0.0
build_runner: ^2.4.15
retrofit_generator: ^9.1.9
json_serializable: ^6.9.4
freezed: ^2.5.8
riverpod_generator: ^2.6.4
flutter_gen_runner: ^5.9.0
< /code>
Я даже пытался обернуть все свое приложение и страницы внутри направленности, но оно все еще не применяет RTL должным образом. < /p>
Ожидаемое поведение:
• Весь пользовательский интерфейс должен быть RTL, что означает, что выравнивание текста, выравнивание Appbar, текстовые задопленки и направление макета должны быть скорректированы в соответствии. UI остается LTR, несмотря на настройки.
• Некоторые элементы могут измениться, но в целом направление остается слева направо. < /P>
Дополнительные примечания:
1. Я уже запускал Flutter Clean и Flutter Pub Я запускаю приложение на симуляторе iOS (может ли это быть проблемой?).
3. Я использую MaterialApp.Router с Gorouter (может быть, Горутер влияет на направленность?). 🚀
ценил любую информацию! Спасибо! 🙌

Подробнее здесь: https://stackoverflow.com/questions/794 ... and-locale
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»