我想创建一个像这样的 BaseScreen Widget 以在我的应用程序中重用:
class BaseScreen extends StatelessWidget {
final Widget child;
BaseScreen({this.child});
@override
Widget build(BuildContext context) {
var safePadding = MediaQuery.of(context).padding.top +
MediaQuery.of(context).padding.bottom;
return Scaffold(
body: LayoutBuilder(
builder: (context, constraint) {
return SingleChildScrollView(
child: SafeArea(
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: constraint.maxHeight - safePadding),
child: IntrinsicHeight(
child: child,
),
),
),
);
},
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
但我看到的问题是我还想重用此类子级中提供的constraint属性。LayoutBuilder
目前,我需要在子级中创建一个新的 LayoutBuilder,这听起来像是对引擎进行更多处理,以及更多样板代码。
如果我可以以某种方式扩展这个小部件,以便在孩子中我可以拥有这个:
@override
Widget build(BuildContext context, BoxConstraints constraints) {
}
Run Code Online (Sandbox Code Playgroud)
那太好了。我知道 Flutter 也鼓励组合而不是继承,所以如果我能以其他方式解决它,我也会很感激。
谢谢你!
我有一个对象的初始化器:
-(id)init
{
self = [super init];
if (self) {
if([[NSUserDefaults standardUserDefaults] objectForKey:kTermsAccepted] != nil){
_termsAccepted = [[NSUserDefaults standardUserDefaults] boolForKey:kTermsAccepted];
}
if([[NSUserDefaults standardUserDefaults] objectForKey:kInitialSetupCompleted] != nil){
_initialSetupCompleted = [[NSUserDefaults standardUserDefaults] boolForKey:kInitialSetupCompleted];
}
if([[NSUserDefaults standardUserDefaults] objectForKey:kDashboardMessage] != nil){
_dashboardMessage = [[NSUserDefaults standardUserDefaults] objectForKey:kDashboardMessage];
} else{
_dashboardMessage = [[NSBundle mainBundle] localizedStringForKey:kDMDefaultDashboardMessage value:kDMDefaultDashboardMessage table:nil];
}
//50 other if statements
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
什么是更好的方法这样做,所以我在进行OCLint分析时没有得到这些警告?
谢谢!
我正在尝试从 For 循环内的数组中删除项目。为此,我按照此处的建议向后循环,如下所示:
for (index, bullet:Bullet) in stride(from: bullets!.count - 1, through: 0, by: -1) {
if(currentTime - bullet.life! > bullet.maxLife){
bullet.removeFromParent()
bullets?.removeAtIndex(index)
}
}
Run Code Online (Sandbox Code Playgroud)
但我收到错误
Type '($T12, Bullet)' does not conform to protocol 'Strideable'
Run Code Online (Sandbox Code Playgroud)
更新
这是子弹的类。这是一个 Cocos2D 应用程序,因此是 CCDrawNode 类型。
import Foundation
class Bullet: CCDrawNode {
var speed:CGPoint?
var maxSpeed:CGFloat?
var angle:CGFloat?
var life:CGFloat?
var maxLife:CGFloat = 0.5
init(angle: CGFloat){
super.init()
self.drawDot(ccp(0,0), radius: 2, color: CCColor.whiteColor());
self.contentSize = CGSize(width: 4, height: 4)
self.angle = angle
maxSpeed = …Run Code Online (Sandbox Code Playgroud) 我们正在制作一个与iOS 8兼容的应用程序,但与此同时,我们的一些开发人员还没有Xcode 6,因此他们在尝试调用时遇到此错误
[self.locationManager requestAlwaysAuthorization];
Run Code Online (Sandbox Code Playgroud)
即使它在if里面
if(floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1) {
[self.locationManager requestAlwaysAuthorization];
}
Run Code Online (Sandbox Code Playgroud)
我们怎么解决这个问题才能在Xcode 5上编译?
ios ×2
objective-c ×2
flutter ×1
ios8 ×1
lint ×1
oclint ×1
optimization ×1
protocols ×1
swift ×1
xcode ×1