1、使用ListView.builder()报错
原因: 使用ListView或类似的可滚动组件时,没有为其父级组件设置明确的高度限制而导致的。这意味着可滚动组件的高度将无限增长,从而导致性能问题和其他布局问题。
解决:给父级组件设置明确的高度
2、语句没有打印
问题:state.zxStockList.forEach((element) { print("自选股票数据:${element.toJson()}"); });没有打印数据
原因:可能是因为获取股票数据的异步函数MarketApi.getOptionalStockList()还没有执行完毕,就已经执行了print("获取股票数据成功")和state.zxStockList.forEach()语句。
解决办法:将print("获取股票数据成功")和state.zxStockList.forEach()放在MarketApi.getOptionalStockList()的回调函数里面,确保获取到数据后再进行打印。
3、使用Expanded(child:PageView.builder()),报错提示:RenderBox was not laid out: _RenderScrollSemantics#cf526 relayoutBoundary=up7 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE 'package:flutter/src/rendering/box.dart': Failed assertion: line 1979 pos 12: 'hasSize'
原因: 没有为父级组件设置具体的宽高度,导致Flutter框架无法计算出小部件的大小和位置。当您在父级组件上设置具体的宽度时,您为子组件提供了明确的布局约束,这有助于Flutter框架正确计算子组件的大小和位置。如果您不提供明确的布局约束,Flutter框架将无法确定子组件的大小和位置,从而导致布局错误。
解决:
4、在pubspec.yaml
文件中声明 date_format
依赖项,但始终找不到包,直接导入包也失效
解决办法:在pubspec.yaml
文件中声明 intl 依赖项,导入 import 'package:intl/intl.dart'; 包
原因:intl
包内置了 DateFormat
类
5、将build中的GetX的状态state传入到另外一个自定义的Widget中报错,提示:
The argument type 'TaskPageState (where TaskPageState is defined in E:\yangflutter\Task_Windows\lib\pages\task_page\task_page_state.dart)' can't be assigned to the parameter type 'TaskPageState (where TaskPageState is defined in E:\yangflutter\task_windows\lib\pages\task_page\task_page_state.dart)'. (Documentation) TaskPageState is defined in E:\yangflutter\Task_Windows\lib\pages\task_page\task_page_state.dart (task_page_state.dart:2). TaskPageState is defined in E:\yangflutter\task_windows\lib\pages\task_page\task_page_state.dart (task_page_state.dart:2).TaskPageState说明你在两个不同的文件中定义了相同的TaskPageState
类,但它们被认为是不同的类型。
原因:在引用TaskPageState的文件时路径出错。或许是大小写问题、或许是不同位置的。
解决办法:检查所有使用到TaskPageState的地方,看它们所引用的路径是否相同(引用的是否是是同一个文件中的类)。
1、从TaskPageState里面查看在文件中有几个使用到它的地方
如图可知,此时共在两个地方使用到了该类。
但其实,在编写代码过程中TaskPagePage类也使用到了它。
此时可以知道,TaskPageLogic和TaskPagePage在使用TaskPageState时引用路径不同。
所以:将TaskPagePage中的引用路径改成和TaskPageLogic一致即可