I have Theme1.js which has the property variables related to Theme 1 styling, Similarly like this I have for Theme 2, Theme2.js Now in main.qml, If I click on the MouseArea, The Theme should toggle between Theme1 to Theme2. I found that conditional import Statements doesn't exist in QML. Is there any other way for this.?
Theme1.js
var color="red";
var textString="This is Theme1"
Theme2.js
var color="green";
var textString="This is Theme2"
main.qml
import QtQuick 2.3
import QtQuick.Window 2.2
import "Theme1.js" as Theme //default Theme 
Window {
    visible: true
    color:Theme.color
    MouseArea {
        anchors.fill: parent
        onClicked: {
            //Change Theme 1 to Theme 2. Basically Toggle Theme here
        }
    }
    Text {
        text: Theme.textString
        anchors.centerIn: parent
    }
}
                First of all, it is not advised to use a js-library to store values, you will bind to later. This is as it is not advised to bind to var-types. You should consider transforming your libraries into QtObject-singletons.
Use libraries only as libraries for functions.
To change the theme, you might have a one singleton Style
pragma Singleton
import QtQuick 2.0
QtObject {
    property Theme current: theme1
    property Theme theme1: Theme1 { }
    property Theme theme2: Theme2 { }
}
with Theme.qml being something like:
import QtQuick 2.0
QtObject {
    property color color0
    property color color1
    property color colorX
}
and then Theme1.qml
import QtQuick 2.0
Theme {
    color0: 'green'
    color1: 'blue'
    colorX: 'red'
}
and Theme2.qml being:
import QtQuick 2.0
Theme {
    color0: 'red'
    color1: 'pruple'
    colorX: 'yellow'
}
Then you bind your properties to color: Style.current.colorX
To change the style, assign another theme to Style.current
EDIT: It might be an optimization, to use intermediate variables to shorten the paths to the value. It adds the convenience of not needing to use Style.current.color0 but to use Style.color0 instead at least. 
You might use this instead for your Style.qml
pragma Singleton
import QtQuick 2.0
Theme { // Use Theme instead of QtObject
    property Theme current: theme1
    property Theme theme1: Theme1 { }
    property Theme theme2: Theme2 { }
    // Bind the `Theme`s properties as intermediate variables to the current Theme.
    color0: (current && current.color0 ? current.color0 : 'defaultColor0')
    color1: (current && current.color1 ? current.color1 : 'defaultColor1')
    colorX: (current && current.colorX ? current.colorX : 'defaultColorX')
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With