Код: Выделить всё
import SwiftUI
struct Snowflake: Identifiable {
var id = UUID()
var x: Double
var y: Double
var scale: Double
var speed: Double
}
struct SnowFallAnimationView: View{
@State private var snowflakes: [Snowflake] = []
@State private var timer: Timer?
var body: some View {
ZStack {
LinearGradient(
gradient: Gradient(colors: [
.black,
.black
]), startPoint: .top, endPoint: UnitPoint.bottom
)
//.ignore safe area
if #available(iOS 15.0, *) {
Canvas { context, size in
for snowflake in snowflakes {
context.draw(Text("❄️").font(.system(size: 10 * snowflake.scale)), at: CGPoint(x: snowflake.x * size.width, y: snowflake.y * size.height))
}
}
} else {
// Fallback on earlier versions
}
}.onAppear() {
startSnowFall()
}
}
func startSnowFall() {
for _ in 0..= 1.2 {
snowflakes[i].y = -0.2
snowflakes[i].x = Double.random(in: 0...1)
}
}
})
}
}
Код: Выделить всё
class NativeViewExample extends StatefulWidget {
const NativeViewExample({super.key});
@override
State createState() => _NativeViewExampleState();
}
class _NativeViewExampleState extends State {
@override
Widget build(BuildContext context) {
const String viewType = '
';
// Pass parameters to the platform side.
final Map creationParams = {};
return Stack(
children: [
UiKitView(
viewType: viewType,
layoutDirection: TextDirection.ltr,
creationParams: creationParams,
creationParamsCodec: const StandardMessageCodec(),
),
Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: ElevatedButton(
onPressed: () {
// Flutter button functionality
print("Flutter button pressed");
},
child: Text('Flutter Button'),
),
),
),
],
);
}
}
Есть ли способ остановить таймер (в быстром коде) при переходе на другой экран. Или просто работайте с уже созданным таймером. (предотвратить создание нескольких таймеров).
Подробнее здесь: https://stackoverflow.com/questions/793 ... her-screen
Мобильная версия