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

Tags:

Dart