Fllutter应用程序即使在设置了方向性和语言环境之后也不应用RTL布局

问题描述 投票:0回答:1
问题: 我正在尝试使我的Flutter应用程序完全rtl(左右),但是无论我做什么,该应用程序仍然是LTR(从左到右)。我尝试了几种方法,包括: 1。设置环境:物质app.router中的语言环境('fa','ir') 2。使用方向性(textDirction:textDirection.rtl)在构建器中 3。添加必要的本地化代表(Flutter_localizations) 4。确保正确配置我的主题和文本样式

,因为该应用不会更改为RTL。这是我的代码:

main.dart:

void main() { runApp(ProviderScope(child: MainWidget())); }
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!, ); }, ); } }
我正在使用的包装:

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

我甚至尝试将我的整个应用程序和页面包装在方向性内,但它仍然无法正确应用RTL。
指出的行为:
•整个UI应为RTL,意味着文本对齐,Appbar对齐,Textfield占位符和布局方向应进行相应调整。
实现行为: •尽管有设置,UI仍然是LTR。 •某些元素可能会发生变化,但总体而言,方向是从左到右的。 aadditional注释: 1。我已经运行了清洁和颤抖的酒吧可以清除缓存。 2。我正在iOS模拟器上运行该应用程序(这可能是一个问题吗?)。 3。我正在使用gitialapp.router和gorouter(也许GOROUTER会影响方向性?)。

有任何建议或解决方案以强制全部RTL吗? 🚀 感谢任何见解!谢谢! 🙌

将其添加到您的路由器类中。

builderWithNav: (context, state, child) { return Directionality( textDirection: TextDirection.rtl, child: child, ); },

并像这样测试建筑商下方的那部分。

// Ensuring RTL layout globally builder: (context, child) { return Localizations.override( context: context, locale: const Locale('fa', 'IR'), child: Directionality( textDirection: TextDirection.rtl, child: child!, ), ); },

android flutter dart flutter-dependencies
1个回答
0
投票
WidgetsFlutterBinding.ensureInitialized(); RenderParagraph.debugEnableRtlSupport = true;


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.