The Widget-to-Swift Map
The interactive Rosetta Stone for Flutter Developers moving to SwiftUI.
En SwiftUI, un Container no existe como tal. Usamos Layout Stacks o modificadores de frame sobre cualquier vista.
Container(
width: 100,
height: 100,
color: Colors.blue,
child: Text('Hi'),
)Text('Hi')
.frame(width: 100, height: 100)
.background(Color.blue)La alineación y distribución funcionan igual, pero SwiftUI usa Spacers explícitos en lugar de MainAxisAlignment.spaceBetween.
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [Text('A'), Text('B')],
)VStack(alignment: .center) {
Text('A')
Text('B')
}Ambos apilan elementos en el eje Z. En SwiftUI, el último elemento de la lista es el que queda arriba.
Stack(
children: [
Image.asset('bg'),
Text('Overlay'),
],
)ZStack {
Image('bg')
Text('Overlay')
}SwiftUI List maneja automáticamente el scroll y el reciclaje de celdas. Es mucho más declarativo.
ListView.builder(
itemCount: items.length,
itemBuilder: (context, i) => Text(items[i]),
)List(items) { item in
Text(item)
}En SwiftUI no llamas a un método para redibujar. Al cambiar una propiedad marcada con @State, la vista se invalida y se recalcula automáticamente.
int counter = 0;
setState(() => counter++);@State private var counter = 0
counter += 1 // UI updates autoPara ocupar todo el espacio disponible, SwiftUI usa Spacers dentro de Stacks o modificadores de frame.
Expanded(
child: Container(color: Colors.red),
)Color.red
.frame(maxWidth: .infinity)En SwiftUI el padding es un modificador, no un widget envolvente. El orden de los modificadores importa.
Padding(
padding: EdgeInsets.all(8.0),
child: Text('Hello'),
)Text('Hello')
.padding(8)Want the full transition guide?
This is just 1% of the knowledge required to become a Senior iOS Engineer. Unlock the professional playbook.
Join Waitlist & Get Full Access