Flutter 是否可以最小化对象定义(对象的折叠代码)(特别是带颤振的省道)(Android Studio)
例如,我有一个很长的代码Flutter 是否可以最小化对象定义(对象的折叠代码)(特别是带颤振的省道)(Android Studio),flutter,dart,Flutter,Dart,例如,我有一个很长的代码 @override Widget build(BuildContext context) { print('building'); WidgetsBinding.instance .addPostFrameCallback((_) => changeThemeAfterBuild(context)); return Scaffold( appBar: AppBar( leading: I
@override
Widget build(BuildContext context) {
print('building');
WidgetsBinding.instance
.addPostFrameCallback((_) => changeThemeAfterBuild(context));
return Scaffold(
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.arrow_back_ios),
onPressed: () {
_logEntryDetailBloc.dispose();
Navigator.pop(context);
},
),
title: Text(this.widget.title),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(2.0),
child: new Material(
child: Padding(
padding: const EdgeInsets.all(6.0),
child: Container(
width: MediaQuery.of(context).size.width - 20,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
new Text(
'Message:',
style: TextStyle(
fontSize: 22,
color: Color.fromRGBO(127, 127, 127, 1)),
),
new Text(
widget.logEntry.message,
style: TextStyle(fontSize: 20),
),
StreamBuilder(
stream: _logEntryDetailBloc.logEntryDetailStream,
builder: (context, snapshot) {
print("has detail data ${snapshot.hasData}");
print(snapshot.data);
if (snapshot.hasData) {
var logEntry = (snapshot.data as LogEntry);
if (logEntry.logLevel.name == ERROR)
return Container(
child: ErrorDetailScreenContainer(),
height:
MediaQuery.of(context).size.height - 156,
);
return Container(
child: Text(snapshot.data.toString()),
height:
MediaQuery.of(context).size.height - 200);
} else {
return new Image(
image: new AssetImage("images/loader.gif"));
}
}),
],
),
),
)),
),
],
),
);
}
@覆盖
小部件构建(构建上下文){
打印(“建筑物”);
WidgetsBinding.instance
.addPostFrameCallback(()=>changeThemeAfterBuild(上下文));
返回脚手架(
appBar:appBar(
领先:IconButton(
图标:图标(图标、箭头、背面),
已按下:(){
_logEntryDetailBloc.dispose();
Navigator.pop(上下文);
},
),
标题:文本(this.widget.title),
),
正文:专栏(
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
填充物(
填充:常数边集全部(2.0),
儿童:新材料(
孩子:填充(
填充:常数边集全部(6.0),
子:容器(
宽度:MediaQuery.of(context).size.width-20,
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
新文本(
“消息:”,
样式:TextStyle(
尺寸:22,
color:color.fromRGBO(127,127,127,1)),
),
新文本(
widget.logEntry.message,
样式:TextStyle(字体大小:20),
),
StreamBuilder(
流:_logEntryDetailBloc.logEntryDetailStream,
生成器:(上下文,快照){
打印(“具有详细数据${snapshot.hasData}”);
打印(快照数据);
if(snapshot.hasData){
var logEntry=(snapshot.data作为logEntry);
if(logEntry.logLevel.name==错误)
返回容器(
子项:ErrorDetailScreenCainer(),
高度:
MediaQuery.of(context).size.height-156,
);
返回容器(
子项:文本(snapshot.data.toString()),
高度:
MediaQuery.of(context.size.height-200);
}否则{
返回新图像(
图像:新资产图像(“images/loader.gif”);
}
}),
],
),
),
)),
),
],
),
);
}
现在的问题是,因为我在做颤振,所以对象是嵌套的,每个对象都是其他对象的子对象。
因此,当父对象通过嵌套变大时。它变得有点不可读,括号匹配变得很困难
解决方案我看到的是:
@override
Widget build(BuildContext context) {
print('building');
WidgetsBinding.instance
.addPostFrameCallback((_) => changeThemeAfterBuild(context));
return Scaffold(
appBar: AppBar(...), // I folded here
body: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(2.0),
child: new Material(
child: Padding(
padding: const EdgeInsets.all(6.0),
child: Container(
width: MediaQuery.of(context).size.width - 20,
child: Column(...) // I foldere here too
)
),
),
),
],
),
);
}
@覆盖
小部件构建(构建上下文){
打印(“建筑物”);
WidgetsBinding.instance
.addPostFrameCallback(()=>changeThemeAfterBuild(上下文));
返回脚手架(
appBar:appBar(…),//我在这里折叠
正文:专栏(
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
填充物(
填充:常数边集全部(2.0),
儿童:新材料(
孩子:填充(
填充:常数边集全部(6.0),
子:容器(
宽度:MediaQuery.of(context).size.width-20,
child:Column(…)//我也在这里折叠
)
),
),
),
],
),
);
}
这是可能的。
或者我可以执行的任何其他选择,使它看起来更干净。如今,Flatter AndroidStudio/IntelliJ插件支持这一点。下面是一个屏幕截图,显示了您的构建方法折叠了两个子树。请注意,小部件ui指南还可以更轻松地跟踪Intellij中的大部件树 您是否要求编辑器具有折叠代码的功能?这将在很大程度上取决于您使用的编辑器-您可以将该细节添加到您的问题中吗?intelliJ和vscode都应该支持折叠。编辑文章。折叠只是在类定义、函数定义、注释等方面,而不是在对象声明/定义方面。更新android studio对我来说很有效。我使用的是不支持此功能的旧版本。谢谢你的帮助