【发布时间】:2020-06-29 18:29:23
【问题描述】:
这是运行应用程序代码的一部分:
Navigator.of(context).pushReplacement(MaterialPageRoute(
builder: (BuildContext context) => _number != null?ChangeNotifierProvider(
create: (context)=>CartList(),
child: HomeScreenDemo(),
):Login())));
我也尝试过使用 MultiProvider 代替 ChangeNotifierProvider,但没有奏效。
这是主屏幕代码的一部分:
Widget build(BuildContext context) {
return Consumer<CartList>(
builder: (context,CART,child){
return Scaffold(
key: scaffoldKey,
backgroundColor: Colors.black,
)
这就是我导航到结帐屏幕的方式:
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => CartScreen(userPin: _userPin,)
));
这是结账界面的代码:
Widget build(BuildContext context) {
return Builder(builder: (BuildContext context)=>Consumer<CartList>(
builder: (context,cart,child){
return Scaffold(
backgroundColor: Colors.black,
我尝试在 Consumer 之前删除 builder 但没有成功。
这是错误截图:
这里我推路线:
showCart? Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),color: Colors.cyan,
),
child: Material(
color: Colors.transparent,
child: InkWell(
splashColor: Colors.black12,
onTap: () {
// Cart OnClick
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => ChangeNotifierProvider.value(
value: Provider.of<CartList>(context, listen: false),
child: CartScreen(userPin: _userPin,)
)
));
},
child: Container(
width:MediaQuery.of(context).size.width,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(CART.count<=1?CART.count.toString()+" ITEM":CART.count.toString()+" ITEMS",style: TextStyle(
letterSpacing: 1.5,fontWeight: FontWeight.w400
),),
SizedBox(height: 5,),
Text(" ₹"+CART.totalPrice.toString().replaceAll(regex, "")),
],
),
SizedBox(width: 160,),
Text('Cart ',style: TextStyle( fontSize: 18,letterSpacing: .5,fontWeight: FontWeight.w400),textAlign: TextAlign.end,),
Icon(Icons.arrow_right,size: 30,),
],
),
padding: EdgeInsets.all(10),
height: 60,
),
),
),
),
),
):Container()
【问题讨论】:
-
使用上一级提供者
-
您陷入了错误消息中描述的第一种情况。您尝试读取的提供程序可能在不同的路径中。
-
@SachinBhankhar,我应该怎么做,在哪里,你能分享一个sn-p的代码吗?真的很感激。
-
@RémiRousselet,我在哪里做错了,我在我使用 Provider 的地方分享了我的整个代码。
-
您能否提供您正在推送路线的完整小部件
标签: flutter dart flutter-provider