error
我在使用时得到这个AppBar
:
滚动条的 ScrollController 没有附加 ScrollPosition。
这是我的CustomScrollBar
:
class CustomScrollBar extends StatelessWidget {
final Widget child;
final ScrollController scrollController;
const CustomScrollBar({
required this.scrollController,
required this.child,
});
@override
Widget build(BuildContext context) {
return RawScrollbar(
thumbColor: AppColors.gray,
radius: Radius.circular(8),
thickness: 4,
isAlwaysShown: true,
controller: scrollController,
child: child,
);
}
}
Run Code Online (Sandbox Code Playgroud)
我应该永远可见。这就是我使用它的方式:
child: CustomScrollBar(
scrollController: _scrollControllerForScrollBar,
child: SingleChildScrollView(
controller: _scrollControllerForScrollBar,
child: Padding(
padding: EdgeInsets.all(7.0.scaled),
child: Container(
width: double.infinity,
child: Text(
'any text bla bla bla \n\n\n this is a lot …
Run Code Online (Sandbox Code Playgroud) 我正在SingleChildScrollView
使我的屏幕滚动,但是当我添加时,SingleChildScrollView
我遇到了以下错误
RenderBox was not laid out: RenderRepaintBoundary#58c65 relayoutBoundary=up1 NEEDS-PAINT
'package:flutter/src/rendering/box.dart':
Failed assertion: line 1681 pos 12: 'hasSize
Run Code Online (Sandbox Code Playgroud)
我的代码
class _RegisterPage extends State<RegisterApp> {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme:
ThemeData(primarySwatch: Colors.blue, brightness: Brightness.light),
darkTheme: ThemeData(brightness: Brightness.dark),
home: SafeArea(
child: Scaffold(
backgroundColor: Colors.white,
body: SingleChildScrollView(
child: Stack(
fit: StackFit.expand,
children: <Widget>[
Column(
children: <Widget>[
Column(
children: <Widget>[
Form(
key: _formKey,
child: new Theme(
data: ThemeData(
accentColor: Colors.purple,
primaryColor: Colors.blue, …
Run Code Online (Sandbox Code Playgroud) 我正在使用 SingleChildScrollView。它的scrollDirection设置为Horizontal,并且>20个子widgets放置在Row Widget内。我想以编程方式滚动到行中的位置小部件(即第 5 个或第 6 个位置)。有什么方法可以以编程方式做到这一点吗?
SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: buttons,
),
)
Run Code Online (Sandbox Code Playgroud) 我面临这个异常:
FlutterError(RenderViewport 不支持返回内在尺寸。计算内在尺寸需要实例化视口的每个子级,这会破坏视口的惰性。如果您只是尝试在主轴方向上收缩包裹视口,请考虑RenderShrinkWrappingViewport 渲染对象(ShrinkWrappingViewport 小部件),无需实现内在维度 API 即可实现该效果。)
当我添加时ProductsWidget
发生异常。
产品小部件的代码是:
class ProductsWidget extends GetResponsiveView<HomeTabController> {
@override
Widget build(BuildContext context) {
return ListView.builder(
shrinkWrap: true,
itemCount: 3,
// padding: EdgeInsets.symmetric(vertical: 20),
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) => Column(
children: [
Row()])}}
Run Code Online (Sandbox Code Playgroud)
调用代码是:
body: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
return SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: constraints.maxHeight,
),
child: IntrinsicHeight(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Expanded(
// flex: 1,
child: HomeAppBar()),
// listView
// i made shrinkWrap=true
// …
Run Code Online (Sandbox Code Playgroud) 我已经在我的颤振项目中实现了signature_pad并且它工作正常。
不幸的是,当我把它放在里面时SingleChildScrollView
,签名没有画出来。它滚动而不是签名。
似乎是,GestureDetector
但我不知道如何解决它。
有人可以给我一些线索吗?
谢谢。
我已经创建了一个带有底部表和列表视图构建器的应用程序。在底部,当我将其向上拖动时必须出现一个文本按钮底部表必须出现。底页上有一个表格。我用 SingleChildScrollView 包裹了底页。但是当我单击 TextFormField 键盘时,我可以滚动底部工作表。但是我无法将其向下拖动并关闭底部工作表。即使我按下手机中的后退箭头以摆脱键盘。
import 'package:flutter/material.dart';
class Home extends StatefulWidget {
const Home({Key key}) : super(key: key);
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
var width = MediaQuery.of(context).size.width;
return Scaffold(
resizeToAvoidBottomInset: false,
body: Stack(
children: [
ListView.builder(
itemCount: 1,
itemBuilder: (context, index) {
return Card(
);
}),
Positioned(
bottom: 0,
child: GestureDetector(
onPanEnd: (details) {
if (details.velocity.pixelsPerSecond.dy < 10) {
//Bottom Sheet.................................................................................................................
showModalBottomSheet(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(
top: Radius.circular(25)),
), …
Run Code Online (Sandbox Code Playgroud) 我有一个父 SCS 视图(SingleChildScrollView) 和一个子 SCS 视图。在子 SCS 视图内有一个数据表,数据表从屏幕底部四分之一左右开始。
现在,当用户滚动到子 SCS 视图内的数据表顶部时,我想滚动父 SCS 视图。
这在网络中自然有效,但在 iOS 或 anroid 中不起作用。我尝试对父级和子级 SCS 视图使用相同的 Scrollcontroller 并使用 ScrollPhysics。但似乎没有任何作用。你能帮我解决一下吗?
这是代码:
import 'package:flutter/material.dart';
void main() {
runApp(
MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Report'),
),
),
),
);
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final ScrollController scrollController = ScrollController();
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Column(
children: [
Text('Some Data', style: TextStyle(fontSize: 30)), …
Run Code Online (Sandbox Code Playgroud) 我一直在用水平和垂直滚动来构建布局。垂直可滚动Column
用于主要内容,并由不同的视图填充,包括ListView
显示促销横幅的水平视图。我想显示垂直滚动的滚动条,但不是水平滚动。我已经将SingleChildScrollView
可以Column
滚动的包裹在中ScrollBar
,但是该栏出现在水平滚动条的垂直方向上。对这些事情有什么微调吗?
证明问题的样本
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Scrollables',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Scrollbar(
child: new SingleChildScrollView(
child: new Container(
padding: EdgeInsets.only(top: 40.0),
child: Column(children: <Widget>[
HorizontalListView(),
VerticalListView(),
]),
)),
),
);
}
}
class HorizontalListView extends StatelessWidget {
var items = new …
Run Code Online (Sandbox Code Playgroud) 在下图中,我想要实现的是让绿色部分Scrollable
,因为如果键盘弹出,它不会给我渲染错误。
整个屏幕只是一个Column
,其中黄色部分是自定义小部件,绿色部分是Column
其中的另一个。
我尝试过不同的解决方案。将整个列包装到 SingleChildScrollView 中,但我希望黄色部分保持固定在顶部。我也尝试过仅将绿色部分包装到 SingleChildScrollView 中,但它不起作用(仍然引发渲染错误)。
我已经看到我可以使用SliverAppBar
,但我想使用我的自定义小部件(黄色部分)来实现。
我有点卡住了。
Scaffold(
body: SafeArea(
child: Column(
children: [
AppBarWidget(height: size.height * 0.15),
Container(
height: size.height - size.height * 0.15 - mediaQuery.padding.top,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
EditableAvatarWidget(
circleRadius: circleRadius,
badge: test,
border: Border.all(color: test.mainColor, width: 5),
),
Column(
children: [
Text(
"Name Surname",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 26,
color: Global.blackGrey),
),
SizedBox(height: 10),
Text(
"mail@mail.com",
style: TextStyle(fontSize: 18, color: Colors.grey),
)
], …
Run Code Online (Sandbox Code Playgroud) 如何在滚动过程中保持某些元素固定(以及可滚动部分之上)?它是否需要位于 SingleChildScrollView 内?
为我的问题做了一个直观的例子:
我需要蓝色部分可滚动,并且它位于需要保持固定的绿色部分后面。
这是我的代码的简化部分:
body: SingleChildScrollView(
child: ListView(
children: [
Obx(()=>Container(THIS CONTAINER SHOULD STAY FIXED DURING SCROLL)),
Obx(()=>Column(THIS PART SHOULD BE SCROLLABLE)),
Obx(()=>Text(THIS PART SHOULD BE SCROLLABLE)),
Obx(()=>Row(THIS PART SHOULD BE SCROLLABLE))
],
)
),
Run Code Online (Sandbox Code Playgroud) scroll flutter flutter-layout flutter-listview singlechildscrollview