标签: flutter-widget

为什么只有 ListView.builder() 中的内容不滚动?

我有一个带有 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)

flutter flutter-layout flutter-listview flutter-widget

4
推荐指数
1
解决办法
4624
查看次数

Flutter - 点击/触摸区域如何工作?

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 种行为吗?

flutter flutter-layout flutter-widget

3
推荐指数
1
解决办法
2777
查看次数

为 Row 中的所有孩子设置相同的大小

我有一个 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)

flutter flutter-layout flutter-widget

3
推荐指数
3
解决办法
2782
查看次数

颤动的圆圈中的多个按钮/文本

我正在尝试在颤振中创建一个圆圈。我想添加多个按钮并将它们绑定在这样的圆圈中。 在此处输入图片说明
标记的字段应该是按钮,课程 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)

} }

flutter flutter-layout flutter-widget

3
推荐指数
2
解决办法
6332
查看次数

需要帮助在颤振中制作可重用的小部件

所以我正在制作一个带有颤振的应用程序。所以在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)

flutter flutter-widget

3
推荐指数
1
解决办法
4145
查看次数

有没有什么方法可以在不使用材质小部件的情况下提升颤动中的小部件?

我正在创建一个搜索小部件,我希望它有一点高度,我可以通过使用 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)

这是我的小部件的样子:

在此输入图像描述

dart flutter flutter-container flutter-widget

3
推荐指数
1
解决办法
2147
查看次数

删除 ROw 中两个 IconButton 之间的多余空间

我想删除 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)

请帮助解决这个问题,我遇到了麻烦:(

图片

widget flutter flutter-layout flutter-widget

3
推荐指数
1
解决办法
2606
查看次数

增加 GestureDetector 面积的最佳方法

增加 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 flutter-layout flutter-widget

3
推荐指数
1
解决办法
3129
查看次数

如果某些条件为 true 或 false,则在 flutter 中显示行

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 可见

我怎样才能实现它?

flutter flutter-widget

3
推荐指数
2
解决办法
6929
查看次数

如何在flutter中自定义切换按钮

我是颤振新手,我需要自定义一个切换按钮,如下所示,任何人都可以帮助我吗?我使用堆栈并定位两个按钮重叠,但当它们更改移动显示时,请帮助我关于这一点。图像

togglebutton flutter flutter-layout flutter-widget

3
推荐指数
1
解决办法
1万
查看次数