我正在尝试创建一个个人资料页面,其中用户信息位于顶部。然后在该标签下有一个用于不同视图的选项卡视图。
这是我目前正在使用的代码,当我TabBarView拿出它时不会出现错误,并且如果将它们包装TabBarView进去,则会Expanded出现错误RenderFlex children have non-zero flex but incoming height constraints are unbounded.。
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(''),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: EdgeInsets.all(10.0),
child: Row(
children: <Widget>[
CircleAvatar(
minRadius: 45.0,
backgroundImage: NetworkImage(
'https://www.ienglishstatus.com/wp-content/uploads/2018/04/Anonymous-Whatsapp-profile-picture.jpg'),
),
Padding(
padding: EdgeInsets.only(left: 10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Testing Name',
style: TextStyle(
fontSize: 22.0,
color: Colors.grey.shade800,
),
),
Text(
'@testing_username',
style: TextStyle(
fontSize: 13.0,
color: …Run Code Online (Sandbox Code Playgroud) 我有一个嵌套在Block中的TabBar和TabBarView.这是因为TabBarView内部的内容是动态的,并且直到运行时才知道内容的高度.
我无法将Block嵌套在TabBarView中,因为TabBar之前的内容应该与TabBarView内容一起滚动.
图:
码:
new DefaultTabController(
length: 3,
child: new Block(
children: [
new Container(
height: 200.0,
decoration: new BoxDecoration(
backgroundColor: Colors.blue[500],
),
),
new TabBar(
tabs: <Widget>[
new Tab(text: '1'),
new Tab(text: '2'),
new Tab(text: '3'),
],
),
new TabBarView(
children: [
new Text('one'),
new Text('two'),
new Text('three'),
],
),
],
)
);
Run Code Online (Sandbox Code Playgroud)
但是,TabBarView的视口不受约束,需要具有有界高度约束的祖先窗口小部件.不幸的是,Block不具有有界高度,因为它具有可滚动性.
运行布局时收到此错误:
??? EXCEPTION CAUGHT BY RENDERING LIBRARY ??????????????????????????????????????????????????????????
I/flutter (28715): The following assertion was thrown during performLayout():
I/flutter (28715): …Run Code Online (Sandbox Code Playgroud) 扑文档显示演示为SliverAppBar+ TabBar+ TabBarView with ListView的使用NestedScrollView,这是一个有点复杂,所以我不知道是否有一个简单而明确的方式来实现它。我尝试了这个:
CustomScrollView
slivers:
SliverAPPBar
bottom: TabBar
TabBarView
children: MyWidget(list or plain widget)
Run Code Online (Sandbox Code Playgroud)
出现错误:
扑:下列说法被扔建筑滚动(axisDirection:对,物理:
扑:一个RenderViewport预计类型RenderSliver的孩子,但收到类型_RenderExcludableScrollSemantics的孩子。
扑:RenderObjects期望特定类型的孩子,因为他们与布局过程中他们的孩子协调例如,RenderSliver不能是RenderBox的子级,因为RenderSliver不了解RenderBox布局协议。
和
flutter:引发了另一个异常:'package:flutter / src / widgets / framework.dart':失败的断言:3497行pos 14:'owner._debugCurrentBuildTarget == this':不正确。
这是我的代码:
import 'package:flutter/material.dart';
main(List<String> args) {
runApp(MyScrollTabListApp());
}
class MyScrollTabListApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(title: "aa", home: MyScrollTabListHomePage());
}
}
class MyScrollTabListHomePage extends StatefulWidget {
@override
MyScrollTabListHomePageState createState() {
return new MyScrollTabListHomePageState();
}
}
class MyScrollTabListHomePageState …Run Code Online (Sandbox Code Playgroud)