我在Flutter中陷入了一个问题。我是一个初学者,我认为它很容易解决。我认为问题是卡无法动态适应。
我为拼写错误表示歉意,但我正在与Google翻译合作! 当我尝试在“家庭概览”中的视频上显示主题和描述时,用户会从输入中插入主题和描述。
我是一个意大利男孩,他非常熟悉Flutter编程,因此我从这门课程开始。您是我唯一可以解决的人。我将向所有可以解决此“问题”的人提供玛格丽塔比萨饼;)!!!
小部件AssegnoCard只是一个小部件,其动态数据通过输入获取。
Andoid Studio返回我的错误是这样的:
I / flutter(18690):在以下情况下引发了以下断言 performResize():
I / flutter(18690):垂直视口的高度不受限制。
I / flutter(18690):视口沿滚动方向扩展以填充 他们的容器。在这种情况下,垂直
I / flutter(18690):视口被赋予了无限的垂直方向 扩大的空间。这种情况
I / flutter(18690):通常发生在可滚动小部件为 嵌套在另一个可滚动的小部件中。
I / flutter(18690):如果此窗口小部件始终嵌套在可滚动的窗口中 小部件,无需使用视口,因为
I / flutter(18690):始终会有足够的垂直空间用于 孩子们。在这种情况下,请考虑使用列
I / flutter(18690):代替。否则,请考虑使用“ shrinkWrap” 属性(或ShrinkWrappingViewport)调整大小
I / flutter(18690):视口的高度到 孩子的身高。
以下代码涉及main.dart文件,概述和作业(ListView.builder所在的位置)。其他文件中的代码与视频课程的代码相同:
//MAIN.DART
import 'package:flutter/material.dart';
import 'panoramica.dart';
import './assegno/gestione_assegno.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MyAppState();
}
}
class _MyAppState extends State<MyApp> {
final List<Map<String, dynamic>> _assegno = [];
void _aggiungiAssegno(Map<String, dynamic> assegno) {
setState(() {
_assegno.add(assegno);
});
print(_assegno);
}
void _aggiornaAssegno(int index, Map<String, dynamic> assegno) {
setState(() {
_assegno[index] = assegno;
});
}
void _eliminaAssegno(int index) {
setState(() {
_assegno.removeAt(index);
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
buttonColor: Colors.blue,
accentColor: Colors.blue,
),
//home: Panoramica(),
routes: {
'/': (BuildContext context) => Panoramica(_assegno),
'/gestioneassegno': (BuildContext context) => GestioneAssegno(_aggiungiAssegno, _aggiornaAssegno, _eliminaAssegno, _assegno),
},
onGenerateRoute: (RouteSettings settings) {
final List<String> pathElements = settings.name.split('/');
if (pathElements[0] != '') {
return null;
}
if (pathElements[1] == 'assegno') {
final int index = int.parse(pathElements[2]);
return MaterialPageRoute<bool>(
builder: (BuildContext context) => Panoramica(
_assegno[index]['materia'],
),
);
}
return null;
},
onUnknownRoute: (RouteSettings settings) {
return MaterialPageRoute(
builder: (BuildContext context) => Panoramica(_assegno ));
},
);
}
}
//OVERVIEW
import 'package:flutter/material.dart';
import './assegno/assegno.dart';
import 'drawer.dart';
// import 'eventi.dart';
class Panoramica extends StatelessWidget {
final List<Map<String, dynamic>> assegno;
Panoramica(this.assegno);
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: Drawer(child: DrawerWidget()),
appBar: AppBar(
title: Text('Panoramica'),
),
body: Assegno(assegno),
//Eventi()
);
}
}
// HOMEWORK
import 'package:flutter/material.dart';
import 'assegno_card.dart';
class Assegno extends StatelessWidget {
final List<Map<String, dynamic>> assegno;
Assegno(this.assegno);
Widget _buildAssegnoList(BuildContext context) {
Widget assegnoCard;
if (assegno.length > 0) {
assegnoCard = ListView.builder(
itemBuilder: (BuildContext context, int index) =>
AssegnoCard(assegno[index], index),
itemCount: assegno.length,
);
} else {
assegnoCard = Container(
child: Card(
child: Column(
children: <Widget>[
ListTile(
title: Text('Assegno'),
leading: Icon(Icons.book),
),
Text('Non è inserito nessun assegno, aggiungerne uno'),
ButtonTheme.bar(
child: ButtonBar(
children: <Widget>[
FlatButton(
child: Text('Aggiungi assegno'),
onPressed: () {
Navigator.pushReplacementNamed(
context, '/gestioneassegno');
},
),
Icon(Icons.note_add, color: Colors.blue,)
],
),
),
],
),
),
);
}
return assegnoCard;
}
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Card(
child: _buildAssegnoList(context)
)
],
);
}
}
答案 0 :(得分:0)
Assegno的build
函数应在其中包含Flexible
或Expanded
小部件,如下所示:
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Flexible(child: Card(child: _buildAssegnoList(context)))
],
);
}