Это не нужно @State
для анимируемых данных, поэтому исправить это просто
struct Bar: Shape {
var ratio: CGFloat

Протестировано с этим демонстрационным видом (на Xcode 11.2 / iOS 13.2 )
struct TestAnimateBar: View {
@State private var animated = false
var body: some View {
VStack {
Bar(ratio: animated ? 0.0 : 1.0).animation(Animation.easeIn(duration: 1))
.foregroundColor(.green)
}
.background(Color.gray)
.frame(height: 40)
.onTapGesture {
self.animated.toggle()
}
}
}