这是 todoline++ 项目开发过程中遇到的问题系列, 记录下来供大家参考。
本篇记录一些异常!
todoline++ 官网请看这里: https://todoline-plus-plus.github.io/
1 Column type is not supported for Todo
1 |
|
上面的代码中, type = :todo.type, 这种写法不支持, todo 表示一个对象, 目前 floor 的 sql 语句中, 不支持通过对象的属性来获取值, 只能改用下面的代码来完成:
1 |
|
参考: github.com/vitusortner/floor/issues/221
2 Context: ‘TodoLineDatabase.todoDao’ is defined here.
1 | 1, entities: [User, Todo]) (version: |
floor 构建代码的时候, 没有生成 TodoDao get todoDao 的对应方法, 这应该是 bug 吧?
是因为在 TodoLineDatabase 这个抽象类中, 下面这条语句写错了
1 | part 'TodoLineDatabase.g.dart'; |
应该写成:
1 | part 'todoline_database.g.dart'; |
在重新运行下面的代码就 OK 了:
1 | flutter packages pub run build_runner build |
3 A RenderFlex overflowed by 93 pixels on the bottom
通过的问题是, 一个组件里面嵌套另外一个子组件, 两个组件都有相同的特征: 没有确定的高度, 导致 flutter 无法确定页面渲染的高度, 也就是说这两个组件是动态决定的。
我自己的情况是: Container 内嵌套这另外一个 Container, 去掉一个 Container 就可以了, 如果你碰到相同的情况, 把其中一个组件换成可以确定高度的组件就可以了。
参考: blog.csdn.net/yuzhiqiang_1993/article/details/89451080
4 TextField widgets require a Material widget ancestor.
TextField 需要用 Scaffold 进行包裹, 但是使用 Scaffold 包括后, 又变成新的页面, 我需要有弹窗效果, 也就是有遮罩效果的窗口, 怎么办?
疯狂搜索后, 仔细阅读错误日志才发现
1 | To introduce a Material widget, you can either directly include one, or use a widget that contains |
原来我可以使用 Card, Dialog, Drawer, 或者 Scaffold, 于是我换成了 dialog, 但还是不行, 最终还是不行.
继续搜索, 又换成 Overlay, 参考: juejin.cn/post/6844904115764658189,
但是 Overlay 无法形成阴影的遮罩效果, 为什么呢? 因为 Overlay 相当于打开新的页面。
怎么办?
使用自定义 Dialog。
flutter 如何自定义 Dialog?
1 | class CustomDurationDialog extends Dialog { |
来源: jianshu.com/p/6e0994952ae4
5 flutter Invalid constant value.
一般是变量前面多加了 const 关键字, 去掉即可
如果您觉得这篇文章对您的学习很有帮助, 请您也分享它, 让它能再次帮助到更多的需要学习的人. 您的支持将鼓励我继续创作 !