类B
不能访问类A
的theMethod()
方法的原因是因为theMethod()
方法是在_AState
类中定义的,这是一个私有类.
要解决这个问题,可以将theMethod()
方法设置为公共方法,也可以在A
类中创建一个getter方法来公开_AState
类的theMethod()
方法.
使theMethod()方法成为公共方法:
class A extends StatelessWidget{
@override
State createState() => _AState();
void theMethod() {
// ...
}
}
在A
类中创建一个getter方法:
class A extends StatelessWidget{
@override
State createState() => _AState();
_AState get state => _;
void theMethod() {
state.theMethod();
}
}
一旦您使theMethod()
方法成为公共方法或在A
类中创建了一个getter方法,您将能够从类B
访问theMethod()
方法.
import 'package:myapp/A.dart';
class B{
A a = A();
void doSomething() {
a.theMethod();
}
}
现在,当您调用类B
上的doSomething()
方法时,它将调用类A上的theMethod()
方法.
通常认为,从类外部访问类的私有成员是不好的做法.这是因为它可能 destruct 封装并使代码更难维护.如果需要访问类的私有成员,最好通过公共的getter或setter方法来实现.