Skip to content

Instantly share code, notes, and snippets.

View ValeryPonomarenko's full-sized avatar
:octocat:
Coding

Valery ValeryPonomarenko

:octocat:
Coding
  • Toronto
View GitHub Profile
class HalfCircleProgressBar extends StatelessWidget {
const HalfCircleProgressBar({
Key? key,
required this.progress,
required this.dotColor,
required this.progressDotColor,
this.dotRadius = _defaultDotRadius,
this.startBarRadius = _defaultStartBarRadius,
this.layers = _defaultLayers,
this.layersSpacing = _defaultLayersSpacing,
@override
void paint(Canvas canvas, Size size) {
final center = size.bottomCenter(Offset(0, -dotRadius));
var radius = startBarRadius;
for (var layer = 0; layer < layers; layer++) {
final lengthOfHalfCircle = pi * radius;
final dotsNumber = (lengthOfHalfCircle / _dotsSizeWithSpacing).floor();
@override
void paint(Canvas canvas, Size size) {
final center = size.bottomCenter(Offset(0, -dotRadius));
final lengthOfHalfCircle = pi * startBarRadius;
final dotsNumber = (lengthOfHalfCircle / _dotsSizeWithSpacing).floor();
final angleStep = _halfCircle / (dotsNumber - 1);
var angle = _startAngle;
class _DiagramPainter extends CustomPainter {
_DiagramPainter({
required this.dotRadius,
required this.startBarRadius,
required this.layers,
required this.layersSpacing,
required this.dotsSpacing,
required this.progress,
required Color dotColor,
required Color progressDotColor,
@ValeryPonomarenko
ValeryPonomarenko / config.yml
Last active June 13, 2022 00:45
Android CircleCI
version: 2
defaults: &defaults
docker:
- image: circleci/android:api-28-alpha
environment:
JVM_OPTS: -Xmx3200m
jobs:
unit-tests:
@ValeryPonomarenko
ValeryPonomarenko / SomeFragment.kt
Last active June 13, 2019 23:51
Rendering a Screen Based On Its ViewState
viewModel.viewState.observe(this) {
when (it) {
is SearchViewState.Entering -> {
text_destination_from.text = it.from.name
text_small_from.text = it.from.shortName
text_destination_to.text = it.to.name
text_small_to.text = it.to.shortName
}
is SearchViewState.Loaded -> {
adapter.flights = it.flights
@ValeryPonomarenko
ValeryPonomarenko / DestinationFragment.kt
Created April 24, 2019 21:37
Rendering a Screen Based On Its ViewState
class DestinationFragment : Fragment() {
//code...
@Inject
internal lateinit var renderer: Renderer<DestinationViewState>
private val viewModel by lazy { /* code ... */ }
//code...
//EmptyQuery state
class EmptyQueryViewStateRenderer @Inject constructor(): ViewStateRenderer<DestinationViewState> {
override fun render(view: View, viewState: DestinationViewState) {
view.text_message.visibility = View.VISIBLE
view.progress.visibility = View.GONE
view.recyclerView_destinations.visibility = View.GONE
view.text_message.text = "Enter the city you want to flight"
}
}
@ValeryPonomarenko
ValeryPonomarenko / Renderer.kt
Last active April 24, 2019 19:04
Rendering a Screen Based On Its ViewState
class Renderer<VS>(
private val viewStateRendererPicker: ViewStateRendererPicker<VS>,
private val renderers: Map<KClass<out ViewStateRenderer<VS>>, ViewStateRenderer<VS>>
) {
fun render(view: View, viewState: VS) {
val rendererClass = viewStateRendererPicker.pick(viewState)
renderers[rendererClass]?.render(view, viewState)
?: throw IllegalStateException("There is no ViewStateRenderer for ${rendererClass.simpleName}")
}
}
@ValeryPonomarenko
ValeryPonomarenko / ViewStateRenderer.kt
Last active April 24, 2019 19:04
Rendering a Screen Based On Its ViewState
interface ViewStateRenderer<VS> {
fun render(view: View, viewState: VS)
}