如何解决如何简化这些变量?
import 'package:Flutter/material.dart';
class Example extends StatefulWidget {
@override
_ExampleState createState() => _ExampleState();
}
class _ExampleState extends State<Example> {
GlobalKey _keyRed = GlobalKey();
GlobalKey _keyPurple = GlobalKey();
GlobalKey _keyGreen = GlobalKey();
Offset positionGreen;
_getSizes(){
RenderBox renderBoxRed = _keyRed.currentContext.findRenderObject();
Size sizeRed = renderBoxRed.size;
print("red size is: $sizeRed");
RenderBox renderBoxPurple = _keyRed.currentContext.findRenderObject();
Size sizePurple = renderBoxPurple.size;
print("purple size is: $sizePurple");
RenderBox renderBoxGreen = _keyGreen.currentContext.findRenderObject();
Size sizeGreen = renderBoxGreen.size;
print("green size is: $sizeGreen");
}
_getPositions(){
final RenderBox renderBoxRed = _keyRed.currentContext.findRenderObject();
final positionRed = renderBoxRed.localToGlobal(Offset.zero);
print("red position is: $positionRed");
final RenderBox renderBoxPurple = _keyPurple.currentContext.findRenderObject();
final positionPurple = renderBoxPurple.localToGlobal(Offset.zero);
print("purple position is: $positionPurple");
final RenderBox renderBoxGreen = _keyGreen.currentContext.findRenderObject();
positionGreen = renderBoxGreen.localToGlobal(Offset.zero);
print("green position is: $positionGreen");
}
@override
Widget build(BuildContext context) {
double limit = MediaQuery.of(context).size.height*.75;
return Scaffold(
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,floatingActionButton: FloatingActionButton(
backgroundColor: Colors.orange,onpressed: (){
_getSizes();
_getPositions();
print("\npositionGreen in dy is ${positionGreen.dy} and limit is $limit");
if(positionGreen.dy > limit){
print("screen resizes");
} else {
print("screen doesn't resize");
}
},),body: SingleChildScrollView(
child: Column(
children: [
Container(
height: 400,key: _keyRed,color: Colors.red,Container(
height: 600,key: _keyPurple,color: Colors.purple,Container(
height: 800,key: _keyGreen,color: Colors.green,],);
}
}
我尝试了下面的代码,但得到了意想不到的结果。
$Feed1 = new SimplePie();
$Feed2 = new SimplePie();
$Feed3 = new SimplePie();
$Feed4 = new SimplePie();
$Feed1->enable_cache(false);
$Feed2->enable_cache(false);
$Feed3->enable_cache(false);
$Feed4->enable_cache(false);
解决方法
您可以使用函数和数组。创建一个数组来保存所有实例并创建一个函数来完成所有重复性工作。
function createSimplePies(int $numberOfPies,bool $enableCache): array
{
$pies = [];
for ($i = 0; $i < $numberOfPies; $i++) {
$pie = new SimplePie();
$pie->enable_cache($enableCache);
$pies[] = $pie;
}
return $pies;
}
$feeds = createSimplePies(4,false);
然后你可以很容易地通过数组索引引用任何实例:
$feeds[0]->someMethod(...)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。