flatter:我在flatter中遇到了一个问题我认为问题是卡不能动态适应

7rtdyuoh  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(297)

我在Flutter中遇到了一个问题。我是一个初学者,我认为这是很简单的问题来解决。我认为问题是卡不能动态适应。
我很抱歉拼写错误,但我写的谷歌翻译!当我试图在home overview的视频中显示主题和描述时,用户从输入中插入主题和描述。
我是一个意大利男孩谁已经非常接近编程在Flutter和我开始了这门课程。你是我唯一能称呼的人。我会给任何能解决这个“问题”的人一份玛格丽塔披萨!!!
widget assegonocard只是一个由输入获取动态数据的widget。
android studio返回给我的错误如下:
i/flatter(18690):在performresize()期间抛出了以下Assert:
i/flatter(18690):垂直视口被赋予无限高。
i/flatter(18690):视口沿滚动方向展开以填充其容器
i/flatter(18690):视口被赋予了无限的垂直空间来扩展。这种情况
i/flatter(18690):通常发生在一个可滚动小部件嵌套在另一个可滚动小部件中时。
i/flatter(18690):如果这个小部件总是嵌套在可滚动的小部件中,那么就不需要使用视口,因为
我/弗利特(18690):总会有足够的垂直空间给孩子们。在这种情况下,请考虑使用列
i/Flutter(18690):取而代之。否则,请考虑使用“shrinkwrap”属性(或shrinkwrappingviewport)调整大小
i/flatter(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)
        )
      ],
    );
  }
}
w8f9ii69

w8f9ii691#

这个 build assegno的函数应具有 Flexible 或者一个 Expanded 其中的小部件如下:

@override
Widget build(BuildContext context) {
  return Column(
    children: <Widget>[
      Flexible(child: Card(child: _buildAssegnoList(context)))
    ],
  );
}

相关问题