【发布时间】:2021-11-12 12:00:26
【问题描述】:
这是我的主屏幕飞镖文件
import 'package:flutter/material.dart';
import './components/body.dart';
import '../model/product.dart';
class HomeScreen extends StatelessWidget {
get product => this.product;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: buildAppBar(),
body: buildBody(),
);
}
AppBar buildAppBar() {
return AppBar(
backgroundColor: Colors.white,
elevation: 0,
leading: IconButton(icon: Icon(Icons.arrow_back, color: Colors.black), onPressed: () {}), //iconbutton
actions: <Widget>[
IconButton(icon: Icon(Icons.search, color: Colors.black), onPressed: () {}), //iconbutton
IconButton(icon: Icon(Icons.shopping_cart, color: Colors.black), onPressed: () {}), //iconbutton
], //<widget>
); //appBar
}
Body buildBody() {
return Body(product: this.product);
}
}
运行时出现的错误是
获取产品包/shoppingapp/screens/home_screen.dart 6:23
packages/flutter/src/widgets/framework.dart 3363:18 updateChild
packages/flutter/src/widgets/framework.dart 6083:14 mount
packages/flutter/src/widgets/framework.dart 3611:13 inflateWidget
packages/flutter/src/widgets/framework.dart 3363:18 updateChild
packages/flutter/src/widgets/framework.dart 4599:16 performRebuild
packages/flutter/src/widgets/framework.dart 4267:5 重建
packages/flutter/src/widgets/framework.dart 4553:5 [_firstBuild]
packages/flutter/src/widgets/binding.dart 1104:16
packages/flutter/src/widgets/framework.dart 2535:19 buildScope
packages/flutter/src/widgets/binding.dart 1103:12 attachToRenderTree
packages/flutter/src/widgets/binding.dart 936:24 attachRootWidget
packages/flutter/src/widgets/binding.dart 917:7
dart:sdk_internal 25312:11 internalCallback 测试期间在模拟器中显示错误。
无效参数:超过堆栈大小的最大调用
import 'package:flutter/material.dart';
import '../../../model/product.dart';
import '../../../constants.dart';
import 'add_to_cart.dart';
import 'color_and_size.dart';
import 'description.dart';
import 'product_title_with_image.dart';
import 'package:shoppingapp/screens/details/components/counter_with_fav_btn.dart';
class Body extends StatelessWidget {
final Product product;
const Body({Key? key, required this.product}) : super(key: key);
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return SingleChildScrollView(
child: Column(
children: <Widget>[
SizedBox(
height: size.height,
child: Stack(
children: <Widget>[
Container(
padding: EdgeInsets.only(top: size.height * 12, left: kDefaultPadding, right: kDefaultPadding), //edgeinsets
margin: EdgeInsets.only(top: size.height * 0.3),
height: 500,
decoration: BoxDecoration(
color: Colors.white, //boxdecoration
borderRadius: BorderRadius.only(
topLeft: Radius.circular(24),
topRight: Radius.circular(24),
), //boxdecoration
), //borderradius
child: Column(
children: <Widget>[
ColorAndSize(product: product), //colorand size
SizedBox(height: kDefaultPadding / 2), //sizedbox
Description(product: product),
SizedBox(height: kDefaultPadding / 2), //sizedbox
CounterWithFavBtn(), //counterwithfavbtn
SizedBox(height: kDefaultPadding / 2), //sizedbox
AddToCart(product: product), //addtocart
], //widget
), //column
), //container
ProductTitleWithImage(product: product),
], //widget
), //stack
), //sizedbox
], //widget
), //column
); //singlechildscrollview
}
}
任何帮助都是有用的 谢谢
【问题讨论】:
-
您的错误可能在代码的其他地方。你能给我们提供完整的错误堆栈吗?此外,堆栈跟踪可能引用了您的代码的某些部分,然后也向我们展示
-
这是做什么的?
get product => this.product;这在我看来就像一个递归 getter,它会符合你的错误 -
恭喜你有一个实际的堆栈溢出。