@override Widget build(BuildContext context){
return WillPopScope( onWillPop: () async { return false; }, child: Stack( children: <Widget>[ DefaultTabController( length: 5, child: ChangeNotifierProvider( builder: (context) => MySchedule(), child: ( Scaffold( appBar: AppBar( actions: <Widget>[ Container( width: MediaQuery.of(context).size.width, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <Widget>[ GestureDetector( onTap: () async{ await Navigator.of(context).push( MaterialPageRoute(builder: (context){ return InApp(); }) ); final MySchedule schedules = Provider.of<MySchedule>(context); schedules.numberOfCoins = 10; }, child: Card( child: Padding( padding: const EdgeInsets.all(4.0), child: Row( children: <Widget>[ Consumer<MySchedule>( builder: (context, coin, _) => buildCoinBar(coin), ), SizedBox( width: 2, ), Stack( children: <Widget>[ Image.asset('assets/coin2.png', height: 22, width: 22,), ], ), ], ), ), ), ), Image.asset('assets/LOGO.png'), Consumer<MySchedule>( builder: (context, userdata, _) => topRightElement(userdata, context), ), ], ), ) ], automaticallyImplyLeading: false, bottom: TabBar( labelStyle: TextStyle(fontSize: 8), tabs: [ Consumer<MySchedule>( builder: (context, schedule, _) => buildNewCardNotification(schedule), ), Tab(icon: Icon(Icons.star), text: 'Csapatom' ,), Tab(icon: Icon(Icons.verified_user), text: 'Forduló',), Tab(icon: Icon(Icons.stars), text: 'Kártyáim',), Tab(icon: Icon(Icons.account_balance), text: 'Ligák',), ], ), ), body: TabBarView( children: [ Office(), MyTeam(), MatchListView(), MyCardView(), ChampionshipView2(), ], ), ) ), ), ), Visibility( visible: msgVisible, child: SafeArea( child: GestureDetector( onTap: (){ setState(() { msgVisible = false; }); }, child: Padding( padding: const EdgeInsets.all(2.0), child: ClipRRect( borderRadius: BorderRadius.circular(0.0), child: Card( shape: RoundedRectangleBorder( side: new BorderSide(color: Colors.lightGreenAccent, width: 2.0), borderRadius: BorderRadius.circular(16.0)), elevation: 8, color: Colors.black87, child: Container( height: 64, width: MediaQuery.of(context).size.width, child: Row( children: <Widget>[ Padding( padding: const EdgeInsets.all(10.0), child: Image.asset('assets/LOGO.png', height:44), ), Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: <Widget>[ Text(title, style: TextStyle( fontSize: 16, color: Colors.lightGreenAccent ),), Text(body, overflow: TextOverflow.ellipsis) ], ), ], ), ), ), ), ), ), ), ) ], ), );
}
当我弹出InApp()类时,我尝试修改numberOfCoins变量。但是我有以下错误:
[VERBOSE-2:ui_dart_state.cc(148)]未处理的异常:错误:在FantasyNbi窗口小部件上方找不到正确的提供程序 要修复,请: 确保提供者是这个FantasyNbi小部件的祖先向提供者提供类型向消费者提供类型*向Provider.of()提供类型 始终使用包导入。例如:import 'package:my_app/my_code.dart'; * Ensure the correctcontext`正在使用。
[VERBOSE-2:ui_dart_state.cc(148)]未处理的异常:错误:在FantasyNbi窗口小部件上方找不到正确的提供程序
要修复,请:
import 'package:my_app/my_code.dart'; * Ensure the correct
您需要builder在ChangeNotifierProvider和之间建立桥梁Scaffold。
builder
ChangeNotifierProvider
Scaffold
提供程序包已经有自己的生成器Consumer,您可以像这样使用它:
Consumer
ChangeNotifierProvider<MySchedule>( create: (context) => MySchedule(), child: Consumer<MySchedule>( builder: (context, provider, child) => Scaffold(....,
检查此链接:https : //pub.dev/packages/provider#reading-a- value
编辑:builder现在create。
create