Flutter:我陷入Flutter的问题中。我认为问题是该卡无法动态适应

时间:2018-12-06 19:56:11

标签: java android dart widget flutter

我在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)
        )
      ],
    );
  }
}

1 个答案:

答案 0 :(得分:0)

Assegno的build函数应在其中包含FlexibleExpanded小部件,如下所示:

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