flutter-开发问题系列之十   2021-12-11


这是 todoline++ 项目开发过程中遇到的问题系列, 记录下来供大家参考。
本篇记录一些开发中遇到的报错:

todoline++ 官网请看这里: https://todoline-plus-plus.github.io/

1 Execution failed for task ‘:app:checkDebugAarMetadata’. Could not find any matches for com.transistorsoft:tsbackgroundfetch:

把 BackgroundFetch 的源代码放到 main.dart 所致

2 Not in inclusive range 0..3: 4

数组下标越界

3 database not loaded

数据库对象还没有初始化, 就开始引用他
对于数据库对象, 初始化和引用这两个步骤, 不要采用异步的方式, 应该采用同步的方式

4 SqliteException(5): database is locked

当有一个数据库连接进行写操作时, 另外一个连接进行写操作就会有该提示。

5 Unimplemented handling of missing static target

弹出遮罩效果的窗口, 窗口内的代码被修改, 热部署后就报这个错误, 猜测是窗口内的代码被修改但是布局元素没有刷新导致。

6 duplicate column name: id

测试发现, floor 中, 如果父类的成员变量被子类覆盖, 父类和子类都使用 @Table 注解映射数据表后, 创建数据表时将会报此错误, 成员变量所对应的字段将创建两次。

7 No Material widget found

想弹出一个遮罩效果的窗口, 里面放上 checkbox, 但很遗憾, 报错了, 按照提示, checkbox 的祖先必须是 Material

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
static void popup(BuildContext context, Widget widget) {
showGeneralDialog(
context: context,
barrierLabel: "",
barrierDismissible: true,
barrierColor: Colors.black.withOpacity(0.8),
transitionDuration: const Duration(milliseconds: 200),
transitionBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) {
return ScaleTransition(scale: animation, child: child);
},
pageBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
return widget;
}
);
}

showGeneralDialog 改成下面的代码就可以了, 也就是 build 返回 Material 就可以了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
showDialog(
context: context,
builder: (context) {
return AppCustomDialog(
Container(
height: list.length * 51,
width: MediaQuery.of(context).size.width - 10,
color: Colors.white,
child: Column(
mainAxisSize: MainAxisSize.min,
children: list
),
)
);
}
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class AppCustomDialog extends Dialog {
final Widget widget;
AppCustomDialog(this.widget);

@override
Widget build(BuildContext context) {
return Material(
// animationDuration:
type: MaterialType.transparency,
child: AnimatedOpacity(
duration: const Duration(seconds: 3),
opacity: 1.0,
child: Center(
child: widget,
),
),
);
}
}

分享到:


  如果您觉得这篇文章对您的学习很有帮助, 请您也分享它, 让它能再次帮助到更多的需要学习的人. 您的支持将鼓励我继续创作 !
本文基于署名4.0国际许可协议发布,转载请保留本文署名和文章链接。 如您有任何授权方面的协商,请邮件联系我。

Contents

  1. 1 Execution failed for task ‘:app:checkDebugAarMetadata’. Could not find any matches for com.transistorsoft:tsbackgroundfetch:
  2. 2 Not in inclusive range 0..3: 4
  3. 3 database not loaded
  4. 4 SqliteException(5): database is locked
  5. 5 Unimplemented handling of missing static target
  6. 6 duplicate column name: id
  7. 7 No Material widget found