flutter - 列的颤振溢出问题
问题描述
我有一个列溢出问题。我尝试使用扩展,但它没有帮助我。我试图返回一个列并在其中一个容器,但它也没有解决溢出问题。我希望盒子的大小是可变的,这样当里面有更多的文本/数据时,它会更大,反之亦然。
有人可以解释一下我的问题吗?
代码
import 'package:auto_route/auto_route.dart';
import 'package:built_value/serializer.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:flutter_form_bloc/flutter_form_bloc.dart';
import 'package:mealapp/models/global.dart';
import 'package:mealapp/models/serializers.dart';
import 'package:mealapp/models/shopping_list/shopping_list.dart';
import 'package:mealapp/router/router.gr.dart';
class ShoppingPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: darkGreyColor,
floatingActionButton: FloatingActionButton(
onPressed: () => ExtendedNavigator.rootNavigator
.pushNamed(Routes.shoppingFormScreen),
child: Icon(Icons.add),
backgroundColor: redColor,
),
body: Column(
children: <Widget>[
Container(
padding: EdgeInsets.only(left: 20, top: 30),
height: 160,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(50),
bottomRight: Radius.circular(50),
),
color: Colors.white,
),
child: Text(
"Shop Plan",
style: mealPlanTitleStyle,
),
),
Expanded(
child: StreamBuilder<QuerySnapshot>(
stream:
Firestore.instance.collection('shopping_list').snapshots(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
}
if (snapshot.hasData) {
final meals = <ShoppingList>[];
for (final doc in snapshot.data.documents) {
final meal = serializers.deserialize(
doc.data,
specifiedType: const FullType(ShoppingList),
) as ShoppingList;
meals.add(meal);
}
if (meals.isEmpty) {
return Center(
child: Text(
'You have no Item inside the Meal list.',
style: TextStyle(color: Colors.white),
),
);
}
return ListView.builder(
itemCount: meals.length,
shrinkWrap: true,
itemExtent: 100,
primary: false,
padding: const EdgeInsets.all(16),
itemBuilder: (context, index) {
return ShoppingListCard(meals[index]);
},
);
}
return SizedBox.shrink();
},
),
),
],
),
);
}
}
class ShoppingListCard extends StatelessWidget {
final ShoppingList shoppingList;
const ShoppingListCard(this.shoppingList);
@override
Widget build(BuildContext context) {
return Container(
margin: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
'${shoppingList.items}',
style: TextStyle(
fontSize: 20, fontWeight: FontWeight.bold, color: Colors.white),
textAlign: TextAlign.center,
),
SizedBox(height: 10),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
SizedBox(width: 8, height: 50),
FlatButton(
color: Colors.red,
onPressed: () => (null), //Edit delete Data from Firestore
shape: RoundedRectangleBorder(
borderRadius: BorderRadiusDirectional.circular(12)),
child: Row(
children: <Widget>[
Text('Delete',
style: TextStyle(
fontWeight: FontWeight.bold, color: Colors.white)),
Icon(Icons.delete_forever, color: Colors.white),
],
),
),
],
),
],
),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(24)),
color: lightBlueColor,
),
);
}
}
解决方案
包裹溢出的Text
小部件Container
并将溢出属性设置为Text
小部件。
例子:
....
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Expanded(
child: Container (
child: Text(
'${shoppingList.items}',
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white),
textAlign: TextAlign.center,
),
overflow: TextOverflow.ellipsis
),),),
SizedBox(height: 10),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
SizedBox(width: 8, height: 50),
FlatButton(
.....
文件:
https://api.flutter.dev/flutter/rendering/TextOverflow-class.html
推荐阅读
- exception - 存在 Autofac 注册,但 servicelocator 抛出 ComponentNotRegisteredException
- javascript - 在浏览器后退按钮上使用 javascript 函数
- jquery - AJAX 表单提交到 Django 类视图
- r - 在R中将年月字符转换为YYYY-MM日期
- c# - 性能测试 C# 代码以每次运行的不同结果结束
- gnuplot - 具有不同 x 轴标签的多个 y 轴的单个直方图
- r - 生成不存在值的数据框
- python-sphinx - 如何在 Sphinx 中获取 cpp Doxygen 模块列表?
- sql - 这个 SQL 有什么问题,选择时间跨度?
- python - 通过 Python 中的 POST 请求将产品添加到 Supreme 上的购物车 - 请求不起作用