我应该如何在第二个dart文件中调用加载的本地化json数据?

我应该如何在第二个dart文件中调用加载的本地化json数据?,json,localization,dart,flutter,Json,Localization,Dart,Flutter,我在lib/resources/lang/下有一个3JSON文件。我在lib/下还有demo_localizations.dart(基于:)文件。我在lib/drawer下还有第二个_page.dart。当我调用second_page.dart时,第二页上没有任何本地化信息 en、ru和tr json文件示例: { "greetings": "Hello world", "secondPageTitle": "Second Page" } { "greetings": "Привет мир",

我在lib/resources/lang/下有一个3JSON文件。我在lib/下还有demo_localizations.dart(基于:)文件。我在lib/drawer下还有第二个_page.dart。当我调用second_page.dart时,第二页上没有任何本地化信息

en、ru和tr json文件示例:

{ "greetings": "Hello world", "secondPageTitle": "Second Page" }
{ "greetings": "Привет мир", "secondPageTitle": "Вторая страница"}
{ "greetings": “Merhaba Dünya”, "secondPageTitle": “Sayfa İki“}
这是主页本地化的一部分,如下所示: 新文本(DemoLocalizations.of(context.trans)(“问候语”)

这是我的第二页。dart代码:

    import 'package:flutter/material.dart';
import '../demo_localizations.dart';

class SecondPage extends StatefulWidget {
    @override
    _SecondPageState createState() => new _SecondPageState();
}

class _SecondPageState extends State<SecondPage> {
    @override
    Widget build(BuildContext context) {
        return new Scaffold(
            appBar: new AppBar(
                title: new Text('Second Page'),
            ),
            body: new Center(
                // TODO: This part is not working
                child: new Text(DemoLocalizations.of(context).trans('secondPageTitle')),

                // TODO: This is working without using DemoLocalizations
                //child:new Text('Second Page'),
            ),
        );
    }
}
导入“包装:颤振/材料.省道”;
导入“../demo_localizations.dart”;
类SecondPage扩展StatefulWidget{
@凌驾
_SecondPageState createState()=>new_SecondPageState();
}
类_SecondPageState扩展状态{
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(“第二页”),
),
正文:新中心(
//TODO:这部分不起作用
子文本:新文本(DemoLocalizations.of(context).trans('secondPageTitle')),
//TODO:这在不使用去本地化的情况下有效
//子项:新文本(“第二页”),
),
);
}
}
这是我的demo_localizations.dart代码:

    import 'dart:async';
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart';



class DemoLocalizations {
    DemoLocalizations(this.locale);

    final Locale locale;

    static DemoLocalizations of(BuildContext context) {
        return Localizations.of<DemoLocalizations>(context, DemoLocalizations);
    }

    Map<String, dynamic> _sentences;

    Future<bool> load() async {
        String data = await rootBundle.loadString('resources/lang/${this.locale.languageCode}.json');
        this._sentences = json.decode(data);
        return true;
    }

    String trans(String key) {
        return this._sentences[key];
    }
}



class DemoLocalizationsDelegate extends LocalizationsDelegate<DemoLocalizations> {
    const DemoLocalizationsDelegate();

    @override
    bool isSupported(Locale locale) => ['tr', 'en', 'ru'].contains(locale.languageCode);

    @override
    Future<DemoLocalizations> load(Locale locale) async {
        DemoLocalizations localizations = new DemoLocalizations(locale);
        await localizations.load();

        print("Load ${locale.languageCode}");

        return localizations;
    }

    @override
    bool shouldReload(DemoLocalizationsDelegate old) => false;
}
导入'dart:async';
导入“dart:convert”;
进口“包装:颤振/材料.省道”;
导入“包:flifter/services.dart”;
导入“package:flatter_本地化/flatter_本地化.dart”;
阶级去本地化{
取消本地化(this.locale);
最终地点;
(BuildContext上下文)的静态去本地化{
返回本地化。of(上下文,去本地化);
}
映射句子;
Future load()异步{
String data=await rootBundle.loadString('resources/lang/${this.locale.languageCode}.json');
这个._句子=json.decode(数据);
返回true;
}
字符串转换(字符串键){
把这个还给我;
}
}
类DemoLocalizationsDelegate扩展了LocalizationsDelegate{
常量DemoLocalizationsDelegate();
@凌驾
bool isSupported(Locale)=>['tr','en','ru'].contains(Locale.languageCode);
@凌驾
未来加载(区域设置)异步{
DemoLocalizations localizations=新的DemoLocalizations(区域设置);
等待本地化。加载();
打印(“加载${locale.languageCode}”);
回归局部化;
}
@凌驾
bool应该重新加载(DemoLocalizationsDelegate old)=>false;
}

我应该如何在第二个dart文件中调用加载的本地化json数据?

hi,我知道这是一个老问题。但我最近编写了一个VisualStudio代码扩展来处理Flatter中的本地化json文件:我遵循了这篇文章,它工作得非常好!我不是你所说的颤振/飞镖专家,所以我无法帮助你完成你展示的特定代码!希望有帮助!