Nir*_*yer 5 navigation android offset dart flutter
我是个新手。我想设计一个自定义的导航窗口,如下所示。
我计划要做的是:
我做了前3个步骤。我对第四个有问题。我设置了一个偏移状态变量,并将脚手架小部件放置在“位置”小部件中。我将Positioned类的“左侧”设置为Offset.dx。
码:
导入'package:flutter / material.dart';
导入'package:flutter / animation.dart';
void main()=> runApp(新的MyApp());
MyApp类扩展StatelessWidget {
@override
小部件build(BuildContext context){
返回新的MaterialApp(
标题:“ Flutter演示”,
主题:新的ThemeData(
primarySwatch:const MaterialColor(0xfff06000,const {
50:const Color(0xfffff0e6),
100:const Color(0xffffd1b3),
200:const Color(0xffffb380),
300:const Color(0xffff944d),
400:常量颜色(0xffff751a),
500:常量颜色(0xfff06000),
600:常量颜色(0xffcc5200),
700:常量颜色(0xffb34700),
800:常量颜色(0xff993d00),
900:常量颜色(0xff662900),
})),
//我堆叠课程
主页:新堆栈(
儿童:[
新的MyNavPage(),
new MyHomePage(title:“ Home”,initialOffset:new Offset(0.0,0.0),),
],
)
);
}
}
//这是我的新闻提要课程
类MyHomePage扩展了StatefulWidget {
最终的字符串标题;
最终偏移量initialOffset;
MyHomePage({Key key,this.title,this.initialOffset}):super(key:key);
@override
_MyHomePageState createState()=>新的_MyHomePageState();
}
_MyHomePageState类使用TickerProviderStateMixin扩展了状态{
偏移位置=新的偏移(0.0,0.0);
int _counter = 0;
void _incrementCounter(){
setState((){
_counter ++;
});
}
无效的initState(){
super.initState();
位置= widget.initialOffset;
}
@override
小部件build(BuildContext context){
最终脚手架=新脚手架(
主要:是的,
appBar:新的AppBar(
标题:new Text(widget.title),
centerTitle:正确,
领先:新IconButton(图标:新Icon(Icons.menu),onPressed:()=> setState(()=> position = new Offset(100.0,0.0)),),
),
backgroundColor:Colors.white30,
正文:新容器(
孩子:新中心(
子级:新列(
mainAxisAlignment:MainAxisAlignment.center,
儿童:[
新文字(
“您已经多次按下按钮:”,
),
新文字(
'$ _counter',
风格:主题
.of(上下文)
.text主题
.display1,
),
],
),
),
),
floatActionButton:新的FloatingActionButton(
onPressed:_incrementCounter,
工具提示:“增量”,
子级:new Icon(Icons.add),
),
);
返回新的Positioned(
左:position.dx,
孩子:脚手架,
);
}
}
//我的导航类。它的导航选项在左侧为一列。
//宽度为100.0,因此我的首页偏移了100.0
类MyNavPage扩展StatefulWidget {
MyNavPage({Key key}):超级(key:key);
@override
_MyNavPageState createState()=>新的_MyNavPageState();
}
_MyNavPageState类扩展了状态{
@override
小部件build(BuildContext context){
展开的createNavChild(I i,文字t){
返回新的Expanded(
子:new GestureDetector(
子代:新容器(
宽度:100.0,
装饰:新的BoxDecoration(颜色:Colors.red,),
子:新列(
mainAxisAlignment:MainAxisAlignment.center,
mainAxisSize:MainAxisSize.min,
儿童:[
一世,
Ť
],
),
),
),
);
}
返回新的脚手架(
主要:是的,
正文:新容器(
边距:MediaQuery
.of(上下文)
。填充,
子级:新列(
crossAxisAlignment:CrossAxisAlignment.start,
儿童:[
createNavChild(new Icon(Icons.home,size:30.0),new Text(“ Home”)),
createNavChild(
新Icon(Icons.person_add,大小:30.0),新Text(“ Register”)),
createNavChild(
新的Icon(Icons.search,大小:30.0),新的Text(“ Player Search”)),
createNavChild(
新的Icon(Icons.event,大小:30.0),新的Text(“ Events”)),
createNavChild(new Icon(Icons.file_download,size:30.0),
新文本(“下载”)),
createNavChild(
新图标(Icons.call,大小:30.0),新文本(“联系人”)),
],
),
装饰:新的BoxDecoration(颜色:Colors.transparent,),
),
);
}
}
引发错误:
I /颤振(3090):??? 渲染库导致的例外情况??????????????????????????????????????????????????? ????????????? I / flutter(3090):在performLayout()期间引发了以下断言: I / flutter(3090):在布局过程中为RenderCustomMultiChildLayoutBox对象赋予了无限大小。 I / flutter(3090):这可能意味着它是一个试图尽可能大的渲染对象,但是它被放置 I / flutter(3090):在另一个渲染对象中,该对象允许其子代选择自己的大小。 I / flutter(3090):提供无限宽度约束的最接近的祖先是: I / flutter(3090):RenderStack#df1fd NEEDS-LAYOUT NEEDS-PAINT I / flutter(3090):创建者:堆栈?语义学?建造者?RepaintBoundary- [GlobalKey#274fe]?忽略指针? I / flutter(3090):FadeTransition吗?小数翻译?SlideTransition?_MountainViewPageTransition? I / flutter(3090):AnimatedBuilder吗?RepaintBoundary?_FocusScopeMarker?? I / Flutter(3090):parentData:(可以使用大小) I / flutter(3090):约束条件:BoxConstraints(w = 360.0,h = 640.0) I / Flutter(3090):大小:大小(360.0,640.0) I / Flutter(3090):对齐方式:AlignmentDirectional.topStart I / flutter(3090):textDirection:ltr I /颤振(3090):适合:宽松 I /颤振(3090):溢出:剪辑 I / flutter(3090):提供无限高度限制的最近祖先是: I / flutter(3090):RenderStack#df1fd NEEDS-LAYOUT NEEDS-PAINT I / flutter(3090):创建者:堆栈?语义学?建造者?RepaintBoundary- [GlobalKey#274fe]?忽略指针? I / flutter(3090):FadeTransition吗?小数翻译?SlideTransition?_MountainViewPageTransition? I / flutter(3090):AnimatedBuilder吗?RepaintBoundary?_FocusScopeMarker?? I / Flutter(3090):parentData:(可以使用大小) I / flutter(3090):约束条件:BoxConstraints(w = 360.0,h = 640.0) I / Flutter(3090):大小:大小(360.0,640.0) I / Flutter(3090):对齐方式:AlignmentDirectional.topStart I / flutter(3090):textDirection:ltr I /颤振(3090):适合:宽松 I /颤振(3090):溢出:剪辑 I / flutter(3090):应用于RenderCustomMultiChildLayoutBox的约束为: I /颤振(3090):BoxConstraints(无约束) I / flutter(3090):给出的确切大小是: I /颤振(3090):大小(无穷大,无穷大) I / flutter(3090):有关更多信息,请参见https://flutter.io/layout/。 I / flutter(3090):引发异常时,这是堆栈: I /颤振(3090):#0 RenderBox.debugAssertDoesMeetConstraints。(包:flutter / src / rendering / box.dart:1698:9) I / flutter(3090):#1 RenderBox.debugAssertDoesMeetConstraints(包:flutter / src / rendering / box.dart:1772:6) I / flutter(3090):#2 RenderBox.size =。(包:flutter / src / rendering / box.dart:1507:17) I / flutter(3090):#3 RenderBox.size =(package:flutter / src / rendering / box.dart:1507:65) I / flutter(3090):#4 RenderCustomMultiChildLayoutBox.performLayout(package:flutter / src / rendering / custom_layout.dart:354:5) I / flutter(3090):#5 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#6 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#7 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#8 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#9 _RenderCustomClip.performLayout(package:flutter / src / rendering / proxy_box.dart:1141:11) I / flutter(3090):#10 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#11 RenderStack.performLayout(package:flutter / src / rendering / stack.dart:553:15) I / flutter(3090):#12 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#13 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#14 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#15 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#16 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#17 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#18 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#19 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#20 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#21 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#22 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#23 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#24 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#25 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#26 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#27 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#28 RenderOffstage.performLayout(package:flutter / src / rendering / proxy_box.dart:2712:13) I / flutter(3090):#29 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#30 RenderStack.performLayout(package:flutter / src / rendering / stack.dart:514:15) I / flutter(3090):#31 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#32 __RenderTheatre&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#33 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#34 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#35 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#36 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#37 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#38 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#39 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#40 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout(package:flutter / src / rendering / proxy_box.dart:107:13) I / flutter(3090):#41 RenderObject.layout(package:flutter / src / rendering / object.dart:1570:7) I / flutter(3090):#42 RenderView.performLayout(package:flutter / src / rendering / view.dart:125:13) I / flutter(3090):#43 RenderObject._layoutWithoutResize(package:flutter / src / rendering / object.dart:1445:7) I / flutter(3090):#44 PipelineOwner.flushLayout(package:flutter / src / rendering / object.dart:709:18) I / flutter(3090):#45 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding.drawFrame(package:flutter / src / rendering / binding.dart:270:19) I / flutter(3090):#46 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding&WidgetsBinding.drawFrame(package:flutter / src / widgets / binding.dart:627:13) I / flutter(3090):#47 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding._handlePersistentFrameCallback(package:flutter / src / rendering / binding.dart:208:5) I / flutter(3090):#48 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback(包:flutter / src / scheduler / binding.dart:990:15) I / flutter(3090):#49 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame(package:flutter / src / scheduler / binding.dart:930:9) I / flutter(3090):#50 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.scheduleWarmUpFrame。(包:flutter / src / scheduler / binding.dart:751:7) I / Flutter(3090):#52 _Timer._runTimers(dart:isolate / runtime / libtimer_impl.dart:382:19) I / Flutter(3090):#53 _Timer._handleMessage(dart:isolate / runtime / libtimer_impl.dart:416:5) I / Flutter(3090):#54 _RawReceivePortImpl._handleMessage(dart:isolate / runtime / libisolate_patch.dart:165:12) I / flutter(3090):(从dart:async包中删除了一帧) I / flutter(3090):引发异常时,正在处理以下RenderObject: I / Flutter(3090):RenderCustomMultiChildLayoutBox#04aef relayoutBoundary = up3 NEEDS-LAYOUT NEEDS-PAINT I / flutter(3090):创建者:CustomMultiChildLayout?AnimatedBuilder?DefaultTextStyle吗?AnimatedDefaultTextStyle吗? I / Flutter(3090):_InkFeatures- [GlobalKey#64807墨水渲染器]?NotificationListener? I / flutter(3090):物理模型?AnimatedPhysicalModel?材质?PrimaryScrollController吗?_ScaffoldScope? I / flutter(3090):脚手架?? I / Flutter(3090):parentData:(可以使用大小) I / flutter(3090):约束:BoxConstraints(无约束) I /颤振(3090):大小:大小(无穷大,无穷大) I / flutter(3090):此RenderObject具有以下后代(显示到深度5): I / flutter(3090):RenderPositionedBox#4ac32 NEEDS-LAYOUT NEEDS-PAINT I / Flutter(3090):RenderFlex#a08f4需求布局需求油漆 I / Flutter(3090):RenderParagraph#eba89需求布局需求油漆 I / Flutter(3090):RenderParagraph#5afd6需求布局需求油漆 I / flutter(3090):RenderConstrainedBox#0b71f NEEDS-LAYOUT NEEDS-PAINT I / flutter(3090):RenderPhysicalModel#fa853需求布局需求油漆 I / Flutter(3090):_RenderInkFeatures#45d75需要布局需要油漆 I / Flutter(3090):RenderPositionedBox#7bd87所需布局所需油漆 I / flutter(3090):RenderPadding#3faff需要布局的需要油漆 I / flutter(3090):RenderStack#4eccb需求布局需求油漆 I / flutter(3090):RenderTransform#16934需要布局需要油漆 I / flutter(3090):RenderTransform#317f7需要布局的需要油漆 I / flutter(3090):RenderSemanticsAnnotations#f02cf NEEDS-LAYOUT NEEDS-PAINT I / flutter(3090):RenderConstrainedBox#75c14所需布局的需要油漆 I / flutter(3090):????????????????????????????????????????????????? ????????????????????????????????????????????????????????? ???????
问题:1.我的方法正确吗?2.如果正确,那么错误告诉我什么?3.如果不是正确的方法,是否有更简单或更佳的方法来实现?
| 归档时间: |
|
| 查看次数: |
3989 次 |
| 最近记录: |