09 Operators in tag expressions - domain-centric/template_engine GitHub Wiki

An operator behaves generally like functions, but differs syntactically or semantically.

Common simple examples include arithmetic (e.g. addition with +) and logical operations (e.g. &).

An operator can be used anywhere in a tag expression wherever that particular operator should be performed.

The TemplateEngine supports several standard operators.

Custom Operators

You can use prepackaged [template_engine] operators or add your own custom operators by manipulating the TemplateEngine.operatorGroups field.
See Example.

Available Operators

Parentheses

Parentheses Operator ()
description: Groups expressions together: What is between parentheses gets processed first
expression example: {{2+1*3}} should render: 6
{{(2+1)*3}} should render: 9
code example: parentheses_test.dart

Prefixes

Positive Operator +
parameter type: number
description: Optional prefix for positive numbers
expression example: {{+3}} should render: 3
code example: positive_test.dart
Negative Operator -
parameter type: number
description: Prefix for a negative number
expression example: {{-3}} should render: -3
code example: negative_test.dart
Not Operator !
parameter type: boolean
description: Prefix to invert a boolean, e.g.: !true =false
expression example: {{!true}} should render: false
code example: not_test.dart

Multiplication

Caret Operator ^
parameter type: number
description: Calculates a number to the power of the exponent number
expression example: {{2^3}} should render: 8
code example: num_power_test.dart
parameter type: boolean
description: Logical XOR with two booleans
expression example: {{true^false}} should render: true
code example: bool_xor_test.dart
Multiply Operator *
parameter type: number
description: Multiplies 2 numbers
expression example: {{2*3}} should render: 6
code example: num_multiply_test.dart
Divide Operator /
parameter type: number
description: Divides 2 numbers
expression example: {{6/4}} should render: 1.5
code example: num_divide_test.dart
Modulo Operator %
parameter type: number
description: Calculates the modulo (rest value of a division)
expression example: {{8%3}} should render: 2
code example: num_modulo_test.dart
And Operator &
parameter type: boolean
description: Logical AND operation on two booleans
expression example: {{true&true}} should render: true
code example: bool_and_test.dart
parameter type: String
description: Concatenates two strings
expression example: {{"Hel"&"lo"}} should render: Hello
code example: string_concatenate_test.dart

Additions

Add Operator +
parameter type: number
description: Adds two numbers
expression example: {{2+3}} should render: 5
code example: num_addition_test.dart
parameter type: String
description: Concatenates two strings
expression example: {{"Hel"+"lo"}} should render: Hello
code example: string_concatenate_test.dart
Subtract Operator -
parameter type: number
description: Subtracts two numbers
expression example: {{5-3}} should render: 2
code example: num_subtract_test.dart
Or Operator |
parameter type: boolean
description: Logical OR operation on two booleans
expression example: {{false|true}} should render: true
code example: bool_or_test.dart

Comparisons

Equals Operator ==
parameter type: Object
description: Checks if two values are equal
expression example: {{5==2+3}} should render: true
code example: equals_test.dart
Not Equals Operator !=
parameter type: Object
description: Checks if two values are NOT equal
expression example: {{4!=2+3}} should render: true
code example: not_equals_test.dart
Greater Than Or Equal Operator >=
parameter type: number
description: Checks if the left value is greater than or equal to the right value
expression example: {{2>=2}} should render: true
code example: greater_than_or_equal_test.dart
Greater Than Operator >
parameter type: number
description: Checks if the left value is greater than the right value
expression example: {{2>1}} should render: true
code example: greater_than_test.dart
Less Than Or Equal Operator <=
parameter type: number
description: Checks if the left value is less than or equal to the right value
expression example: {{2<=2}} should render: true
code example: less_than_or_equal_test.dart
Less Than Operator <
parameter type: number
description: Checks if the left value is less than the right value
expression example: {{2>1}} should render: true
code example: less_than_test.dart

Assignment

Assignment Operator =
description: Assigns a value to a variable. A new variable will be created when it did not exist before, otherwise it will be overridden with a new value.
expression example: {{x=2}}{{x=x+3}}{{x}} should render: 5
code example: assignment_test.dart
⚠️ **GitHub.com Fallback** ⚠️