Flutter 使用多供应商颤振进行定位,未显示此类方法错误
当我尝试在颤振中使用本地化提供程序时,它没有显示这样的方法错误 我还使用提供商进行身份验证,使用谷歌和fb以及电子邮件身份验证,但同时我还需要在应用程序中实现本地化,如下所示Flutter 使用多供应商颤振进行定位,未显示此类方法错误,flutter,dart,localization,provider,Flutter,Dart,Localization,Provider,当我尝试在颤振中使用本地化提供程序时,它没有显示这样的方法错误 我还使用提供商进行身份验证,使用谷歌和fb以及电子邮件身份验证,但同时我还需要在应用程序中实现本地化,如下所示 import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart';
import 'package:rewahub/AppLanguage.dart';
import 'package:rewahub/locator.dart';
import 'package:rewahub/models/auth_model.dart';
import 'app_localizations.dart';
import 'views/login_page.dart';
import 'views/main_page.dart';
void main() async{
AppLanguagemodel appLanguagemodel = AppLanguagemodel();
await appLanguagemodel.fetchLocale();
setupLocator();
runApp(MyApp(appLanguagemodel:appLanguagemodel,));
}
class MyApp extends StatelessWidget {
final AppLanguagemodel appLanguagemodel;
MyApp({this.appLanguagemodel});
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(
builder: (_) => appLanguagemodel,
child: Consumer<AppLanguagemodel>(builder: (context, appmodel, child) {
return MaterialApp(
//locale: model.fetchLocale(),
locale: appmodel.appLocal,
supportedLocales: [
Locale('en', 'US'),
Locale('ar', ''),
],
localizationsDelegates: [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
home: LogInPage(),
);
}),
),
ChangeNotifierProvider(builder: (_) => locator<AuthModel>()),
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
// initialRoute: '/',
//onGenerateRoute: Router.generateRoute,
home: ScreensController(),
),
);
}
}
class ScreensController extends StatelessWidget {
final StreamController<bool> _verificationNotifier =
@override
Widget build(BuildContext context) {
final user = Provider.of<AuthModel>(context);
switch (user.status) {
case Status.Unauthenticated:
// return LanguageSelect();
case Status.Authenticating:
return LogInPage();
case Status.Authenticated:
return MainPage();
default:
return LogInPage();
}
}
}
导入'dart:async';
进口“包装:颤振/材料.省道”;
导入“package:flatter_本地化/flatter_本地化.dart”;
导入“包:provider/provider.dart”;
进口“包装:rewahub/AppLanguage.dart”;
导入“package:rewahub/locator.dart”;
导入“package:rewahub/models/auth_model.dart”;
导入“app_localizations.dart”;
导入“视图/登录页面.dart”;
导入“视图/主页面.dart”;
void main()异步{
ApplAngugeModel ApplAngugeModel=ApplAngugeModel();
等待appLanguagemodel.fetchLocale();
setupLocator();
runApp(MyApp(appLanguagemodel:appLanguagemodel,);
}
类MyApp扩展了无状态小部件{
最终ApplangueModel ApplangueModel;
MyApp({this.appLanguagemodel});
@凌驾
小部件构建(构建上下文){
回程多供应商(
供应商:[
变更通知提供者(
生成器:()=>appLanguagemodel,
子项:使用者(生成器:(上下文、应用模型、子项){
返回材料PP(
//语言环境:model.fetchLocale(),
区域设置:appmodel.appLocal,
支持的区域设置:[
地区('en','US'),
语言环境('ar',''),
],
本地化授权:[
AppLocalizations.delegate,
GlobalMaterialAllocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
主页:登录页面(),
);
}),
),
ChangeNotifierProvider(生成器:(\u)=>locator()),
],
孩子:MaterialApp(
debugShowCheckedModeBanner:false,
//initialRoute:“/”,
//onGenerateRoute:Router.generateRoute,
主页:屏幕控制器(),
),
);
}
}
类ScreensController扩展了无状态小部件{
最终流控制器\u验证通知程序=
@凌驾
小部件构建(构建上下文){
最终用户=提供者(上下文);
开关(用户状态){
案例状态。未经验证:
//返回语言select();
案例状态。验证:
返回登录页面();
案例状态。已验证:
返回主页();
违约:
返回登录页面();
}
}
}
这就像
runApp(MultiProvider(
providers: [
ChangeNotifierProvider.value(value: CurrentData()),
ChangeNotifierProvider.value(value: AppProvider()),
ChangeNotifierProvider.value(value: UserProvider.initialize()),
],
child: Consumer<CurrentData>(
builder: (context, provider, child) => MaterialApp(
debugShowCheckedModeBanner: false,
//title: 'Flutter App Localization with Provider demo',
locale: Provider.of<CurrentData>(context).locale,
home: ScreensController(),
localizationsDelegates: [
const AppLocalizationDelegate(),
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('en'),
const Locale('ar'),
const Locale('fr'),
const Locale('es'),
const Locale('ru'),
],
),
),
));
runApp(多供应商)(
供应商:[
ChangeNotifierProvider.value(值:CurrentData()),
ChangeNotifierProvider.value(值:AppProvider()),
ChangeNotifierProvider.value(值:UserProvider.initialize()),
],
儿童:消费者(
生成器:(上下文、提供者、子项)=>MaterialApp(
debugShowCheckedModeBanner:false,
//标题:“Flitter应用程序本地化与提供商演示”,
locale:Provider.of(context.locale),
主页:屏幕控制器(),
本地化授权:[
常量AppLocalizationDelegate(),
GlobalMaterialAllocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
支持的区域设置:[
常量区域设置('en'),
常量区域设置('ar'),
常量区域设置('fr'),
常量区域设置('es'),
常量区域设置('ru'),
],
),
),
));
这就像
runApp(MultiProvider(
providers: [
ChangeNotifierProvider.value(value: CurrentData()),
ChangeNotifierProvider.value(value: AppProvider()),
ChangeNotifierProvider.value(value: UserProvider.initialize()),
],
child: Consumer<CurrentData>(
builder: (context, provider, child) => MaterialApp(
debugShowCheckedModeBanner: false,
//title: 'Flutter App Localization with Provider demo',
locale: Provider.of<CurrentData>(context).locale,
home: ScreensController(),
localizationsDelegates: [
const AppLocalizationDelegate(),
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('en'),
const Locale('ar'),
const Locale('fr'),
const Locale('es'),
const Locale('ru'),
],
),
),
));
runApp(多供应商)(
供应商:[
ChangeNotifierProvider.value(值:CurrentData()),
ChangeNotifierProvider.value(值:AppProvider()),
ChangeNotifierProvider.value(值:UserProvider.initialize()),
],
儿童:消费者(
生成器:(上下文、提供者、子项)=>MaterialApp(
debugShowCheckedModeBanner:false,
//标题:“Flall应用本地化,提供程序演示”,
locale:Provider.of(context.locale),
主页:屏幕控制器(),
本地化授权:[
常量AppLocalizationDelegate(),
GlobalMaterialAllocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
支持的区域设置:[
常量区域设置('en'),
常量区域设置('ar'),
常量区域设置('fr'),
常量区域设置('es'),
常量区域设置('ru'),
],
),
),
));
Hy,请在此处添加问题的完整错误日志。你解决了吗?Hy,你能在这里添加你的问题的完整错误日志吗。你解决了吗?