2024-8-24 总结 flutter初次运行的报错解决方法/stateful与stateless widget
报错解决方法
即使是默认生成的新项目项目结构也可能报错。
解决方法,由面及点,逐渐缩小范围。
以flutter为例子,新项目已经写了一部分的页面,提示报错为arr[]数组不可为空,可以:
- 再新建一个新项目,运行,确认运行设备没问题;
- 将main文件复制到新项目上,运行,确认最重要的main.dart没问题;如果有错,逐步撤销之前进行的更改,直到运行无误。该过程可以确定,到底是调用的页面的问题,还是main.dart的问题。
- 将lib文件夹复制到新项目。观察已经写好的页面。比如这次就是虽然写了很多,但真正render的只有appBar,那么,注销掉其他没有被调用的部分,先确认appBar的正确性;
运行,发现果然是appBar的问题。 - 继续注释掉appBar里面的小widget,一直到定位到错误地点为止。
- 如果是在web端运行,记得刷新一下浏览器。
stateful和stateless widget,props和state
- stateless的静止不是永恒的,而是在生命周期以内的
- props,父组件传入参数。useState,组件内传入参数。
- 比如组件向服务器请求更新,服务器传入参数到组件,因为不涉及父组件,所以也是useState
- 二者代码比较
class SearchBar extends StatefulWidget {
const SearchBar({super.key});
@override
State<SearchBar> createState() => _SearchBarstate();
}
class _SearchBarstate extends State<SearchBar>{
String hint = "一个默认值"; //这里的hint就是向服务器请求更新的部分
@override
void initState() {
gethint();
}
Future<void> gethint(){ //可以考虑放到getX里然后统一管理,单拎出来形成一个新的文件
setState
}
@override
Widget build(BuildContext context){
return();
}
}
class FindBar extends StatelessWidget{
const FindBar({super.key});
@override
Widget build(BuildContext context){
return
();
}
}
待办:
- 页面,周一之前必须肝完
- getX知识总结
- 协议,周三开始一天一个,SSH,非对称加密开始。浅浅算一下欠了几个...痛苦面具。
- 如果有时间的话...拜托了一定要有时间啊...react总结,巩固,加深