Ben*_*ins 5 dart flutter flutter-layout
由于我引入了 PageView 小部件,我收到此错误:
\n\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 Exception caught by widgets library \xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 The following assertion was thrown while applying parent data.: Incorrect use of ParentDataWidget.\n\nThe ParentDataWidget Expanded(flex: 1) wants to apply ParentData of type FlexParentData to a RenderObject, which has been set up to accept ParentData of incompatible type ParentData.\n\nUsually, this means that the Expanded widget has the wrong ancestor RenderObjectWidget. Typically, Expanded widgets are placed directly inside Flex widgets. The offending Expanded is currently placed inside a RepaintBoundary widget.\n\nThe ownership chain for the RenderObject that received the incompatible parent data was: Padding \xe2\x86\x90 Container \xe2\x86\x90 AnimatedContainer-[LabeledGlobalKey<ImplicitlyAnimatedWidgetState<ImplicitlyAnimatedWidget>>#758ef] \xe2\x86\x90 KeyboardAvoider \xe2\x86\x90 Expanded \xe2\x86\x90 VpFormContainer \xe2\x86\x90 LoggedOutNickNamePage \xe2\x86\x90 RepaintBoundary \xe2\x86\x90 IndexedSemantics \xe2\x86\x90 NotificationListener<KeepAliveNotification> \xe2\x86\x90 \xe2\x8b\xaf When the exception was thrown, this was the stack\n#0 RenderObjectElement._updateParentData.<anonymous closure> package:flutter/\xe2\x80\xa6/widgets/framework.dart:5770\n#1 RenderObjectElement._updateParentData package:flutter/\xe2\x80\xa6/widgets/framework.dart:5786\n#2 RenderObjectElement.attachRenderObject package:flutter/\xe2\x80\xa6/widgets/framework.dart:5808\n#3 RenderObjectElement.mount package:flutter/\xe2\x80\xa6/widgets/framework.dart:5501\n#4 SingleChildRenderObjectElement.mount package:flutter/\xe2\x80\xa6/widgets/framework.dart:6117 ...\n\n\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 Exception caught by widgets library \xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 The following assertion was thrown while applying parent data.: Incorrect use of ParentDataWidget.\n\nThe ParentDataWidget Expanded(flex: 1) wants to apply ParentData of type FlexParentData to a RenderObject, which has been set up to accept ParentData of incompatible type ParentData.\n\nUsually, this means that the Expanded widget has the wrong ancestor RenderObjectWidget. Typically, Expanded widgets are placed directly inside Flex widgets. The offending Expanded is currently placed inside a RepaintBoundary widget.\n\nThe ownership chain for the RenderObject that received the incompatible parent data was: Padding \xe2\x86\x90 Container \xe2\x86\x90 AnimatedContainer-[LabeledGlobalKey<ImplicitlyAnimatedWidgetState<ImplicitlyAnimatedWidget>>#758ef] \xe2\x86\x90 KeyboardAvoider \xe2\x86\x90 Expanded \xe2\x86\x90 VpFormContainer \xe2\x86\x90 LoggedOutNickNamePage \xe2\x86\x90 RepaintBoundary \xe2\x86\x90 IndexedSemantics \xe2\x86\x90 NotificationListener<KeepAliveNotification> \xe2\x86\x90 \xe2\x8b\xaf When the exception was thrown, this was the stack\n#0 RenderObjectElement._updateParentData.<anonymous closure> package:flutter/\xe2\x80\xa6/widgets/framework.dart:5770\n#1 RenderObjectElement._updateParentData package:flutter/\xe2\x80\xa6/widgets/framework.dart:5786\n#2 RenderObjectElement.attachRenderObject package:flutter/\xe2\x80\xa6/widgets/framework.dart:5808\n#3 RenderObjectElement.mount package:flutter/\xe2\x80\xa6/widgets/framework.dart:5501\n#4 SingleChildRenderObjectElement.mount package:flutter/\xe2\x80\xa6/widgets/framework.dart:6117 ...\nRun Code Online (Sandbox Code Playgroud)\n在过去的几个小时里我一直在尝试修复,但没有任何效果。有谁确切知道在哪里应用修复以及修复是什么?
\n这是页面视图:
\nclass LoggedOutPageView extends StatelessWidget {\n final _controller = PageController(\n initialPage: 0,\n );\n\n @override\n Widget build(BuildContext context) {\n print('building loggedOutPageView');\n\n final pageView = PageView(\n physics: const NeverScrollableScrollPhysics(),\n controller: _controller,\n clipBehavior: Clip.none,\n children: [\n LoggedOutNickNamePage(_controller),\n LoggedOutEmailPage(_controller),\n LoggedOutPasswordPage(),\n ],\n );\n\n final _pageContent = Expanded(\n child: Container(child: pageView, color: Colors.transparent), flex: 1);\n\n final _pageIndicator = Container(\n height: 50,\n child: SmoothPageIndicator(\n controller: _controller,\n count: 3,\n effect: const JumpingDotEffect(),\n ),\n color: Colors.transparent);\n\n return VpFormPageScaffold([\n VpLogoHeader(\n onPressed: () {\n print(_controller.page);\n if (_controller.page > 0) {\n _controller.previousPage(\n duration: const Duration(milliseconds: 800),\n curve: Curves.easeInOutCubic);\n } else {\n Navigator.pop(context);\n }\n },\n pop: false),\n _pageContent,\n _pageIndicator\n ]);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nVpFormPage脚手架:
\nclass VpFormPageScaffold extends StatelessWidget {\n VpFormPageScaffold(this.children);\n\n List<Widget> children;\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n resizeToAvoidBottomPadding: false,\n body: ConstrainedBox(\n constraints: BoxConstraints.tightFor(\n height: MediaQuery.of(context).size.height),\n child: VpGradientContainer(\n beginColor: initialGradientColor,\n endColor: endGradientColor,\n child: SafeArea(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.end,\n children: children)))));\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nVpGradientContainer:
\nclass VpGradientContainer extends StatelessWidget {\n const VpGradientContainer({this.child, this.beginColor, this.endColor});\n\n final Widget child;\n final Color beginColor;\n final Color endColor;\n\n @override\n Widget build(BuildContext context) {\n return Container(\n child: child,\n height: double.infinity,\n width: double.infinity,\n padding: const EdgeInsets.all(40),\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topCenter,\n end: Alignment.bottomCenter,\n colors: [beginColor, endColor],\n ),\n ),\n );\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
扩展的小部件必须放置在 Flex 小部件内。您正在使用无法使用的扩展小部件。您必须从此处删除 Expanded 小部件:
final _pageContent = Expanded(
child: Container(child: pageView, color: Colors.transparent), flex: 1);
Run Code Online (Sandbox Code Playgroud)
请查看 Flutter 文档以获取扩展小部件:
扩展 Row、Column 或 Flex 的子级以便子级填充可用空间的小部件。
使用 Expanded 小部件可以使 Row、Column 或 Flex 的子项展开以填充沿主轴的可用空间(例如,水平填充行或垂直填充列)。如果扩展多个子项,则可用空间根据弹性因子在它们之间分配。
Expanded widget 必须是 Row、Column 或 Flex 的后代,并且从 Expanded widget 到其封闭的 Row、Column 或 Flex 的路径必须仅包含 StatelessWidgets 或 StatefulWidgets(不能包含其他类型的 widgets,如 RenderObjectWidgets)。
| 归档时间: |
|
| 查看次数: |
7738 次 |
| 最近记录: |