我在flutter中使用这两个类进行本地化 按照这篇文章设置。
import 'package:flutter/cupertino.dart';
abstract class Languages {
final String? extra;
Languages({this.extra});
static Languages? of(BuildContext context, {String? extra}) {
return Localizations.of<Languages>(context, Languages);
}
String get text199;
}
以及此语言En:
import 'languages.dart';
class LanguageEn extends Languages
{
LanguageEn({String? extra}) : super(extra: extra);
@override
String get text199 => "Update data($extra)";
}
当我传递这个额外参数时,无论我使用什么语言,我都会得到 null
"Update data(null)"
Languages.of(context,extra: "$activeID")!.text199),
但是当我直接选择一个语言课程并执行此操作时,它会起作用,并且我得到数字而不是空
"Update data(4)"
LanguageEn(extra: "$activeID").text199),
如何用这个包传递动态字符串?
通过用以下内容替换语言类来解决这个问题:
import 'package:flutter/cupertino.dart';
abstract class Languages {
String? extra;
Languages({this.extra});
static Languages? of(BuildContext context, {String? extra}) {
final Languages? instance = Localizations.of<Languages>(context, Languages);
if (instance != null) {
instance.extra = extra; // Assign the extra parameter to the instance.
}
return instance;
}
String get text199;
}