Я пытаюсь сделать свое приложение 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
Мобильная версия