2

我试图在应用程序的 2 个屏幕中使用范围模型,我不想使用范围模型运行应用程序,我只是在第一个屏幕中初始化范围模型并且它可以工作,但是在我导航到它的第二个屏幕中出现错误。那我该怎么办?

首先我像这样从预屏幕调用第一个屏幕

Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) => ServiceDetails(model: new CartModel()),
                    )
                );

然后在 ServiceDetails 我没有收到任何错误,所以在构建小部件中

@override
    Widget build(BuildContext context) {
      return ScopedModel(
        model: widget.model,
        child: Scaffold(...)
      );
     }

我有一个购物车按钮,点击:

onTap: () {
   Navigator.of(context).push(
     MaterialPageRoute(
      builder: (context) => new Cart()
     ),
  );
},

购物车类:

class Cart extends StatefulWidget {
  @override
  _CartState createState() => _CartState();
}

class _CartState extends State<Cart> {
  @override
  Widget build(BuildContext context) {
      return Scaffold(
      appBar: AppBar(title: Text("Your Cart")),
      body:  ScopedModel.of<CartModel>(context, rebuildOnChange: true).cart.length == 0 ?
        Container(
            alignment: Alignment.center,
            child: Text("Your cart is empty!",style: new TextStyle(color: Colors.grey))
        ) :
        Container(
            padding: EdgeInsets.only(top:15),
            child: cartListView()
        )
    );
  }

  Widget cartListView(){
    return ScopedModelDescendant<CartModel>(
        builder: (context, child, model) {
    return ListView.builder(
      shrinkWrap: true,
      itemCount: ScopedModel.of<CartModel>(context,rebuildOnChange: true).total,
      itemBuilder: (context, index) {
          return Container(
             child: Image.asset(model.cart[index].fs.image)
           )
       }
)})}
}

所以当我进入购物车页面时出现错误

can't find the correct scoped model

任何人都可以帮助PLZ

4

0 回答 0