@override 小部件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 correct
context`是 被使用。
答案 0 :(得分:9)
根据提供程序包的最新版本,builder()
的{{1}}方法已更改为ChangeNotifierProvider
。
因此,编辑 Esen Mehmet 的版本,将改为:
create()
答案 1 :(得分:0)
您需要在builder
和ChangeNotifierProvider
之间建立Scaffold
桥梁。
Provider软件包已经拥有自己的生成器Consumer
,您可以像这样使用它:
ChangeNotifierProvider(
builder: (context) => MySchedule(),
child: Consumer<MySchedule>(
builder: (context, provider, child) => Scaffold(....,