我有一个带有 Text 小部件和 ListView 的屏幕,当我尝试在 ListView 内滚动时,它不允许我滚动。
我的身体是 SingleChildScrollView 但它没有为 ListView.builder 提供滚动视图。我试图将 ListView.build 包装在 Expanded 中,但没有成功。
class HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: new AppBar(
title: Text("MyBar"),
centerTitle: true,
),
body: SingleChildScrollView(child: Column(
children: <Widget>[
Text(
"Information"),
Container(
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: widget.match.players.length,
itemBuilder: (context, index) {
return Column(
children: <Widget>[
Card(
child: ListTile(
leading: CircleAvatar(
radius: 30.0,
foregroundColor:
Theme.of(context).primaryColor,
backgroundColor: Colors.grey,
backgroundImage:
CachedNetworkImageProvider("url"),
),
title: new Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: …Run Code Online (Sandbox Code Playgroud) 1)如果我有这个,当我点击孩子时,Container它不会打印“点击”:
Container(
color: Colors.red,
child: GestureDetector(
onTap: () => print('tap'),
child: Container(
width: 100,
height: 100,
),
),
),
Run Code Online (Sandbox Code Playgroud)
2)如果我有这个,当我点击孩子时,Container它会打印“点击”:
Container(
color: Colors.red,
child: GestureDetector(
onTap: () => print('tap'),
child: Container(
width: 100,
height: 100,
decoration: BoxDecoration(),
),
),
),
Run Code Online (Sandbox Code Playgroud)
3)如果我有这个,当我点击孩子时Container,在文本之外,它会打印“点击”:
Container(
color: Colors.red,
child: GestureDetector(
onTap: () => print('tap'),
child: Container(
width: 100,
height: 100,
child: Text("A"),
),
),
),
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释这 3 种行为吗?
我有一个 Row 有 2 个这样的孩子:
----------------------
| wide child1 | child2 |
----------------------
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使每个单元格的大小相等,以便每个单元格的宽度等于最宽单元格的宽度?像这样:
--------------------------
| wide child1 | child2 |
--------------------------
Run Code Online (Sandbox Code Playgroud)
所以整个 Row 都会占用biggestCellWidth * numOfChildren宽度。
我无法使用内置小部件实现此行为并尝试实现 MultiChildLayoutDelegate但它也不起作用,因为我无法测量孩子。
更新:
----------------------
| wide child1 | child2 |
----------------------
Run Code Online (Sandbox Code Playgroud) 我正在尝试在颤振中创建一个圆圈。我想添加多个按钮并将它们绑定在这样的圆圈中。

标记的字段应该是按钮,课程 1只是文本。我能够创建这样的东西,但它只是在按钮中拆分的字符串。

这是我的代码。我不知道如何完成这项任务。我是扑的新手。
import 'package:flutter/material.dart';
void main(){runApp(MyApp());}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: new AppBar(
title: Text("Student home"),
),
body:Center(
child: Container(
margin: EdgeInsets.all(10),
padding: EdgeInsets.all(10),
width: 200,
height: 200,
child: Center(
child: Text("Course 1 \n Course 2",
style: TextStyle(fontSize: 12.0,
fontStyle: FontStyle.italic,
),
textAlign: TextAlign.center,
),
),
decoration: BoxDecoration(
border:Border.all(width:3),
borderRadius: BorderRadius.all(
Radius.circular(50),
),
color: Colors.yellow,
),
),
)
),
);
Run Code Online (Sandbox Code Playgroud)
} }
所以我正在制作一个带有颤振的应用程序。所以在main.dart文件中,我正在制作一个组件,它基本上是一堆包裹在一起的小部件。我必须多次使用这个组件,所以我想在另一个 dart 文件中制作这些可重用的组件,然后在main.dart 中导入它。
这是我的reusable.dart代码
import 'package:flutter/material.dart';
double mainTab = 150;
class TileData extends StatefulWidget {
@override
_TileDataState createState() => _TileDataState();
}
class _TileDataState extends State<TileData> {
@override
Widget build(BuildContext context) {
return Container(
height: 200 - 15.0,
width: mainTab - 10.0,
child: Padding(
padding: const EdgeInsets.fromLTRB(10, 15, 0, 0),
child: Column(
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
我计划以这种方式在我的main.dart中使用这个 TileData 小部件
ListView(
children: children: <Widget>[
TileData(
children: <Widget>[
Text('Element 1'),
]),
TileData(
children: …Run Code Online (Sandbox Code Playgroud) 我正在创建一个搜索小部件,我希望它有一点高度,我可以通过使用 Material 小部件来做到这一点,但是 Material 还具有其他属性,例如颜色,并且当我用 Material 小部件包裹容器时,它会创建奇怪的边缘。
Widget search(BuildContext context) {
var theme = Provider.of<ThemeNotifier>(context);
return Container(
margin: EdgeInsets.only(top: 28, left: 10, right: 10),
child: Material(
elevation: 10,
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: theme.getTheme().materialTheme.buttonColor,
),
padding: EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
InkWell(onTap: () => print("Menu tapped"), child: Icon(Icons.menu)),
Expanded(
child: TextField(
decoration: InputDecoration(
contentPadding: EdgeInsets.only(left: 15, right: 15),
hintText: "Search City",
filled: false,
border: InputBorder.none),
),
),
Icon(Icons.search),
],
),
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
这是我的小部件的样子:
我想删除 Row 小部件中两个 IconButton 之间的一些额外空间我尝试了更多,但仍然无法删除小部件之间的空间
Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text("Home",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 15,
color: Colors.black
)
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
IconButton(
icon: Icon(
Icons.edit,
color: Colors.black,
size: 20,
),
onPressed: () {
IntelUtility.navigateToScreen(
context, EditHomeAddressScreen()
);
},
),
IconButton(
icon: Icon(
Icons.delete,
color: Colors.black,
size: 20,
),
onPressed: () {},
),
],
),
],
),
],
),
Run Code Online (Sandbox Code Playgroud)
请帮助解决这个问题,我遇到了麻烦:(
增加 GestureDetector 面积的最佳方法是什么?
我想避免使用具有自定义宽度和高度的容器
我有一张带有此行的卡片:
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
new IconButton(
icon: new Icon(
Icons.remove,
color: Colors.white,
),
onPressed: () => { _decreaseCounter() },
),
GestureDetector(
child: Text(
_counter.toString(),
style: new TextStyle(
color: Colors.white,
fontSize: 18.0,
fontWeight: FontWeight.bold),
),
onTap: () => _openDialog(),
),
new IconButton(
icon: new Icon(
Icons.add,
color: Colors.white,
),
onPressed: () => { _increaseCounter()},
)
Run Code Online (Sandbox Code Playgroud)
当我点击文本时,它应该打开一个对话框,但是 GesutreDetector 区域非常小,很难打开该对话框。所以我需要的是增加这个检测区域。
flutter中有一行小部件,我希望它在满足某些条件时可见,如果条件为真,则不应可见,如果条件为假,则应可见
下面是代码
Container(
child: Row(
children: <Widget>[
// Button send image
Text("Text1"),
Text("Text2"),
Text("Text3"),
Text("Text4"),
],
),
width: double.infinity,
height: 50.0,
decoration: BoxDecoration(border: Border(top: BorderSide(color: greyColor2, width: 0.5)), color: Colors.white),
)
Run Code Online (Sandbox Code Playgroud)
例如你可以说的条件
int a==b
Run Code Online (Sandbox Code Playgroud)
如果 true 不可见,如果 false 可见
我怎样才能实现它?
我是颤振新手,我需要自定义一个切换按钮,如下所示,任何人都可以帮助我吗?我使用堆栈并定位两个按钮重叠,但当它们更改移动显示时,请帮助我关于这一点。图像