Ubuntudroid Litho Kotlin Save

A simple project showing how to set up an Android project to work with Kotlin and Facebook's Litho.

Project README

litho-kotlin

A simple project showing how to set up an Android project to work with Kotlin AND Facebook's Litho.

Check out the litho-retrofit branch for a more advanced example showing how to load a webservice response into a Recycler using RxJava and Retrofit.

Gist

Apart from the regular Kotlin and Litho setup two changes are important:

In your app module's build.gradle:

apply plugin: 'kotlin-kapt'

dependencies {
...

  def lithoVersion = '0.2.0'
  compile "com.facebook.litho:litho-core:$lithoVersion"
  compile "com.facebook.litho:litho-widget:$lithoVersion"
  provided "com.facebook.litho:litho-annotations:$lithoVersion"
  kapt "com.facebook.litho:litho-annotations:$lithoVersion" // in addition(!) to the "provided" line
  kapt "com.facebook.litho:litho-processor:$lithoVersion" // kapt instead of annotationprocessor or apt
  compile "com.facebook.soloader:soloader:$lithoVersion"
  debugCompile "com.facebook.litho:litho-stetho:$lithoVersion"
  compile "com.facebook.litho:litho-fresco:$lithoVersion"
  testCompile("com.facebook.litho:litho-testing:$lithoVersion") {
      exclude group: 'com.google.code.findbugs'
  }
}

In your Litho component specs (thanks to @grandstaish for the @JvmStatic hint):

@LayoutSpec
class ListItemSpec { // no object!!!

  companion object {

      @JvmStatic // important!!!
      @OnCreateLayout
      fun onCreateLayout(context: ComponentContext): ComponentLayout = Column.create(context)
              .paddingDip(YogaEdge.ALL, 16)
              .backgroundColor(Color.WHITE)
              .child(
                      Text.create(context)
                              .text("Hello world")
                              .textSizeSp(40f)
              )
              .child(
                      Text.create(context)
                              .text("Litho tutorial")
                              .textSizeSp(20f)
              )
              .build()
  }
}

License

Copyright 2017 Sven Bendel

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Open Source Agenda is not affiliated with "Ubuntudroid Litho Kotlin" Project. README Source: ubuntudroid/litho-kotlin
Stars
37
Open Issues
0
Last Commit
7 years ago

Open Source Agenda Badge

Open Source Agenda Rating