使用XD to Flutter插件导出Adobe XD项目报Key参数空值错误如何解决?
报错原因
该报错是Flutter空安全机制触发的编译错误:
- 你当前使用的Flutter版本为2.0及以上的空安全版本,要求非可空类型的可选命名参数,必须显式添加
required修饰符,或声明为可空类型、指定非空默认值 - XD to Flutter插件导出的代码仍沿用旧版非空安全的写法,构造函数中的
Key key是可选命名参数,没有标记可空也没有加required修饰,不符合空安全语法要求 - 此外你贴出的导出代码还存在语法结构错误:Widget闭合顺序错乱,末尾存在多余的大括号、逗号等无效符号,也会触发编译报错
解决方法
1. 修复构造函数key参数报错
两种方案二选一即可:
- 方案一:给key参数加
required修饰,修改后构造函数写法:
XDIPhone678SE1({ required Key key, }) : super(key: key);
- 方案二:将key声明为可空类型,修改后构造函数写法:
XDIPhone678SE1({ Key? key, }) : super(key: key);
2. 修复导出代码的语法错误
调整业务代码的闭合顺序,删除末尾多余的无效符号,修正后完整代码如下:
import 'package:flutter/material.dart'; import 'package:adobe_xd/pinned.dart'; class XDIPhone678SE1 extends StatelessWidget { XDIPhone678SE1({ Key? key, }) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xffffffff), body: Stack( children: <Widget>[ Pinned.fromPins( Pin(size: 143.0, middle: 0.5), Pin(size: 27.0, middle: 0.5), child: Text( 'Hello World!', style: TextStyle( fontFamily: 'Segoe UI', fontSize: 20, color: const Color(0xff707070), ), textAlign: TextAlign.left, ), ), ], ), ); } }
3. 根源性规避方案
将XD to Flutter插件更新到最新适配空安全的版本,后续导出的代码会自动兼容空安全语法,无需手动修改。
内容的提问来源于stack exchange,提问作者winpriv
相关产品推荐
相关产品推荐

