2012-11-08 5 views

답변

8

당신이 Mirrors으로 달성 할 수있는 몇 가지가 있습니다. 당신이 궁금해

import 'dart:mirrors'; 

class Page { 
    var name; 

    method() { 
    print('called!'); 
    } 
} 

void main() { 
    var page = new Page(); 

    var im = reflect(page); 

    // Set values. 
    im.setField("name", "some value").then((temp) => print(page.name)); 

    // Call methods. 
    im.invoke("method", []); 
} 

경우, im은 기본적으로 page 인스턴스를 반영하는 InstanceMirror입니다 :

여기에 클래스의 값을 설정하는 방법과 동적 방법을 호출하는 방법을 예입니다. Is there a way to dynamically call a method or set an instance variable in a class in Dart?

6

Dart Mirror API을 사용하면 이러한 일을 할 수 있습니다. 미러 API는 완전히 지금 구현하지만 여기가 일할 수있는 방법은되지 않습니다

import 'dart:mirrors'; 

class Page { 
    String name; 
} 

main() { 
    final page = new Page(); 
    var value = "value"; 

    InstanceMirror im = reflect(page); 
    im.setField("name", value).then((_){ 
    print(page.name); // display "value" 
    }); 
} 
+1

'Futures.wait()'에 대한 호출은 거의 의미가 없습니다. 이를 생략 할 수 있으며 결과는 동일합니다. 'Futures.wait()'는 주어진 액션이 완료 될 때 완료되는'Future'를 리턴하므로 제대로 작동하게하려면'.then()'을 써야합니다. 물론 작업이 비동기이기 때문에 운에 따라 작동합니다. –

+0

의견을 보내 주셔서 감사합니다. 나는 미래의 사용법에 익숙하지 않고 나는'await' 제안과 혼동한다. www.dartbug.com/104 –

0

당신은 예를 들어 Serializable

사용할 수 있습니다 :

import 'package:serializable/serializable.dart'; 

@serializable 
class Page extends _$PageSerializable { 
    String name; 
} 

main() { 
    final page = new Page(); 
    var attribute = "name"; 
    var value = "value"; 

    page["name"] = value; 
    page[attribute] = value; 

    print("page.name: ${page['name']}"); 
}