- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 flutter 方面遇到问题。我的屏幕没有滚动。我有几个组件使用 Column 功能将它们放在一个下方,但简单的滚动功能不起作用。
这是我的代码
Widget buildContent() {
int count = 0;
if (incomeList == null) {
incomeList = List<Income>();
}
return Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
mainAxisSize: MainAxisSize.max,
children: [
Expanded(
flex: 1,
child: Column(
children: <Widget>[
Text(
"${widget.outstanding}",
textAlign: TextAlign.center,
),
Padding(
padding: EdgeInsets.all(3.0),
child: Text(zeroAmount,
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.green,
)),
),
],
),
),
Container(width: 0.4, height: 40, color: Colors.black54),
Expanded(
flex: 1,
child: Column(
children: [
Text(
"${widget.received_or_paid}",
textAlign: TextAlign.center,
),
Padding(
padding: EdgeInsets.all(3.0),
child: Text(zeroAmount, textAlign: TextAlign.center,
style: TextStyle(color: Colors.green)),
),
],
),
),
//Divider(color: Colors.black54),
],
),
// SizedBox(height: 12), //padding
Padding(
padding: EdgeInsets.only(top: 12.0, left: 15.0, right: 15.0),
child: Divider(
height: 1,
color: Colors.black54,
),
),
IncomeTransaction(),
],
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: TextSwitchAppBar(
bottom: PreferredSize(
child: _buildLayoutAttributesPage(),
),
),
floatingActionButton: FloatingActionButton(
backgroundColor: colorPrimary,
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => getTransactionType()));
},
child: Icon(
Icons.add,
),
),
body: Container(
//height: 1000,
padding: EdgeInsets.symmetric(vertical: 16.0),
child: buildContent()
),
);
}
下面是收入交易代码
import 'package:flutter/material.dart';
import 'package:finsec/utils/colors.dart';
import 'package:finsec/utils/strings.dart';
import 'package:finsec/screens/transaction/text_switch_app_bar.dart';
import 'package:finsec/screens/transaction/row_column_layout_attributes.dart';
import 'package:finsec/widget/transaction_list_view.dart';
import 'package:finsec/screens/income/second_fragment.dart';
import 'package:finsec/screens/income/add_edit_income.dart';
import 'package:finsec/data/blocs/bloc_provider.dart';
import 'package:finsec/data/blocs/transaction_bloc.dart';
import 'package:finsec/screens/transaction/transaction_list.dart';
import 'package:finsec/data/db_provider.dart';
import 'package:sqflite/sqflite.dart';
import 'package:finsec/model/income/income.dart';
import 'package:finsec/widget/total_amount.dart';
class IncomeTransaction extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return IncomeTransactionState();
}
}
class IncomeTransactionState extends State<IncomeTransaction> {
DBProvider db = new DBProvider();
List<Income> incomeList;
int count = 0;
@override
Widget build(BuildContext context) {
if (incomeList == null) {
incomeList = List<Income>();
updateListView();
for(int i=0; i<incomeList.length; i++) {
print('CATEGORY');
print(this.incomeList[i].category);
}
}
TextStyle titleStyle = Theme.of(context).textTheme.subhead;
return
ListView.builder(
shrinkWrap: true,
itemCount: count,
itemBuilder: (BuildContext context, int position) {
return Column(
children: [
ListTile(
leading: CircleAvatar(
backgroundColor: Colors.yellow,
child: Icon(Icons.play_arrow),
),
title: Text(this.incomeList[position].category,
style: titleStyle,),
// subtitle: Text(this.incomeList[position].payoutDate),
trailing: GestureDetector(
child: Icon(Icons.delete, color: Colors.grey,),
onTap: () {
_delete(context, incomeList[position]);
},
),
onTap: () {
debugPrint("ListTile Tapped");
navigateToDetail(
this.incomeList[position], 'Edit Note');
},
)
]
);
}
);
}
// Returns the priority color
Color getPriorityColor(int priority) {
switch (priority) {
case 1:
return Colors.red;
break;
case 2:
return Colors.yellow;
break;
default:
return Colors.yellow;
}
}
// Returns the priority icon
Icon getPriorityIcon(int priority) {
switch (priority) {
case 1:
return Icon(Icons.play_arrow);
break;
case 2:
return Icon(Icons.keyboard_arrow_right);
break;
default:
return Icon(Icons.keyboard_arrow_right);
}
}
void _delete(BuildContext context, Income note) async {
int result = await db.deleteTransaction(note.id);
if (result != 0) {
_showSnackBar(context, 'Note Deleted Successfully');
updateListView();
}
}
void _showSnackBar(BuildContext context, String message) {
final snackBar = SnackBar(content: Text(message));
Scaffold.of(context).showSnackBar(snackBar);
}
void navigateToDetail(Income note, String title) async {
bool result = await Navigator.push(context, MaterialPageRoute(builder: (context) {
// return NoteDetail(Income, title);
}));
if (result == true) {
updateListView();
}
}
void updateListView() {
final Future<Database> dbFuture = db.initializeDatabase();
dbFuture.then((database) {
Future<List<Income>> incomeListFuture = db.getIncomeList('income');
incomeListFuture.then((incomeList) {
setState(() {
this.incomeList = incomeList;
this.count = incomeList.length;
});
});
});
}
}
Listview 没有滚动。我尝试使用 SingleChildScrollView 但 ListView 仍然没有滚动。我在网上读到 SingleChildScrollView 不适用于 Column 属性,但不确定这是否属实。我还读到我应该在 ListView 顶部包含小部件(未完成的总数,收到的总数)作为 ListView 的一部分,但不知道该怎么做。该标题不应该是可点击的。
谁能帮我修改这段代码,以便我的屏幕可以上下滚动。另外,如果我在 listview builder 中使用 shrinkWrap: true,不知道为什么会出现底部溢出错误。
最佳答案
在 buildContent
中,将您的 IncomeTransaction()
包装成 Expanded
:
like Expanded(child: IncomeTransaction())
.
这应该可以解决。
如果您已经有 ListView
,则不需要 SingleChildScrollView
。 ListView
可以自行滚动。
我会推荐阅读这篇文章 https://flutter.dev/docs/development/ui/layout/box-constraints这有助于理解此类情况。
关于flutter - SingleChildScrollView 不能与列中的多个组件一起使用 - flutter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57514245/
我正在 csv 上使用 hadoop 来分析一些数据。我使用sql/mysql(不确定)来分析数据,现在陷入了僵局。 我花了好几个小时在谷歌上搜索,却没有找到任何相关的东西。我需要一个查询,在该查询中
我正在为 Bootstrap 网格布局的“简单”任务而苦苦挣扎。我希望在大视口(viewport)上有 4 列,然后在中型设备上有 2 列,最后在较小的设备上只有 1 列。 当我测试我的代码片段时,似
对于这个令人困惑的标题,我深表歉意,我想不出这个问题的正确措辞。相反,我只会给你背景信息和目标: 这是在一个表中,一个人可能有也可能没有多行数据,这些行可能包含相同的 activity_id 值,也可
具有 3 列的数据库表 - A int , B int , C int 我的问题是: 如何使用 Sequelize 结果找到 A > B + C const countTasks = await Ta
我在通过以下功能编写此查询时遇到问题: 首先按第 2 列 DESC 排序,然后从“不同的第 1 列”中选择 只有 Column1 是 DISTINCT 此查询没有帮助,因为它首先从第 1 列中进行选择
使用 Bootstrap 非常有趣和有帮助,目前我在创建以下需求时遇到问题。 “使用 bootstrap 在桌面上有 4 列,在平板电脑上有 2 列,在移动设备上有 1 列”谁能告诉我正确的结构 最佳
我是 R 新手,正在问一个非常基本的问题。当然,我在尝试从所提供的示例中获取指导的同时做了功课here和 here ,但无法在我的案例中实现这个想法,即可能是由于我的问题中的比较维度更大。 我的实
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个 df , delta1 delta2 0 -1 2 0 -1 0 0 0 我想知道如何分配 delt
您好,我想知道是否可以执行以下操作。显然,我已经尝试在 phpMyAdmin 中运行它,但出现错误。也许还有另一种方式来编写此查询。 SELECT * FROM eat_eat_restaurants
我有 2 个列表(标题和数据值)。我想要将数据值列 1 匹配并替换为头文件列 1,以获得与 dataValue 列 1 和标题值列 2 匹配的值 头文件 TotalLoad,M0001001 Hois
我有两个不同长度的文件,file2 是一个很大的引用文件,我从中提取文件 1 的数据。 我有一行 awk,我通常会对其进行调整以在我的文件中进行查找和替换,但它总是在同一列中进行查找和替换。 所以对于
假设我有两个表,如下所示。 create table contract( c_ID number(1) primary key, c_name varchar2(50) not
我有一个带有 varchar 列的 H2 表,其检查约束定义如下: CONSTRAINT my_constraint CHECK (varchar_field <> '') 以下插入语句失败,但当我删
这是最少量的代码,可以清楚地说明我的问题: One Two Three 前 2 个 div 应该是 2 个左列。第三个应该占据页面的其余部分。最后,我将添加选项来隐藏和
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我有一个包含 28 列的数据库。第一列是代码,第二列是名称,其余是值。 public void displayData() { con.Open(); MySqlDataAdapter
我很沮丧:每当我缩小这个网页时,一切都变得一团糟。我如何将网页居中,以便我可以缩小并且元素不会被错误定位。 (它应该是 2 列,但所有内容都合并为 1)我试过 但由于某种原因,这不起作用。 www.o
我是一名优秀的程序员,十分优秀!