Use static variable in function()
You can't use static in a function.
Global variables in Dart are no code smell because they are only library global.
Global variables in JavaScript are ugly because they can conflict with global variables from 3rd-party libraries.
This doesn't happen in Dart.
As you can make a library in Dart as small as you want (for example only one variable) and you have something similar to a namespace for a library when you import it like
import 'my_globals.dart' as gl;
and then use it like
print(gl.myGlobalValue);
this is no code smell.
You could also create a class to simulate a namespace like
class MyGlobals {
static myVal = 12345;
}
But library global variables are preferred in Dart instead of classes which contain only static variables or functions.
You can use a function object to maintain state:
library test;
class Test implements Function {
var status = 0;
static var static_status = 10;
call() {
print('Status: $status');
print('Static status: $static_status');
status++;
static_status++;
}
}
void main() {
var fun = new Test();
fun();
fun();
fun();
var fun2 = new Test();
fun2();
fun2();
fun2();
}
Output:
Status: 0
Static status: 10
Status: 1
Static status: 11
Status: 2
Static status: 12
Status: 0
Static status: 13
Status: 1
Static status: 14
Status: 2
Static status: 15