,因为该应用不会更改为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
指出的行为: •整个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!,
),
);
},
WidgetsFlutterBinding.ensureInitialized();
RenderParagraph.debugEnableRtlSupport = true;