我是不熟悉flutter的人,在世界上尝试实现covid 19案例跟踪器,并且在创建用于显示案例数的自定义小部件时遇到了此错误,有人可以帮我解决此问题的解决方案完全像我已经尝试修复了几个小时了。这是窗口小部件库捕获的异常:错误:在此NewCasesCard窗口小部件上方找不到正确的提供程序
要解决,请:
context
。如果这些解决方案均无效,请在以下位置提交错误:https://github.com/rrousselGit/provider/issues
这里是代码:
import 'package:stay_safe/Providers/AppBrain.dart';
import 'package:stay_safe/utils/theme.dart';
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart';
class NewCasesCard extends StatelessWidget {
@override
Widget build(BuildContext context) {
return getCard(context);
}
Widget getCard(context){
if (Provider.of<AppBrain>(context).isloading2)
return Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: SpinKitPumpingHeart(color: AppTheme().kcolors[0],),
),
);
else {
final countryInfo = Provider.of<AppBrain>(context).countryStats['countrydata'][0];
return Padding(
padding: const EdgeInsets.all(8.0),
child: Card(
elevation: 0.5,
color: Colors.white70,
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('New Cases Today',style: GoogleFonts.cabin(fontSize: 25),),
),
SizedBox(height: 8,),
Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
StatIcon(countryInfo['total_active_cases'], 'Active', AppTheme().kcolors[0]),
StatIcon(countryInfo['total_new_cases_today'], 'New Cases', AppTheme().kcolors[2]),
StatIcon(countryInfo['total_new_deaths_today'], 'Deaths', AppTheme().kcolors[1])
],),
)
],
),
),
);
}
}
}
Widget StatIcon(int count,String type,Color color){
return Column(
children: <Widget>[
Text(count.toString(),style: GoogleFonts.cabin(color: color,fontWeight: FontWeight.bold,fontSize: 20),),
Text(type,style: GoogleFonts.cabin(color: color,fontWeight: FontWeight.bold,fontSize: 20),),
],
);
}
此问题似乎是您在小部件树的不同于AppBrain
的另一部分中创建了NewCasesCard
提供程序,因此,当NewCasesCard
尝试通过搜索树来查找提供程序时,它就无法创建。您需要确保AppBrain
提供程序在小部件树中的NewCasesCard
上方。因此,例如在包含此小部件的屏幕中,您可能会拥有: