Возможность доступа к частному классу во флаттере - PullRequest
0 голосов
/ 09 июля 2020

Я обнаружил в Интернете, что поля, классы и методы подчеркивания будут доступны только в файле .dart, в котором они определены, но похоже, что мой код противоречит этому:

Код sinppet из main.dart:

class _TestState extends State<Test> {
 int a = 0;
 void increase() {
   setState(() {
     a = a + 1;
   });
 }

 var b = ['hello', 'bye'];
 @override
 Widget build(BuildContext context) {
  return MaterialApp(
    home: Scaffold(
        body: Column(
      children: <Widget>[Text(b[a]), MyButton(increase)],
    )),
  );
 }
}

Фрагмент кода из MyButton.dart:

 class MyButton extends StatelessWidget {
  final Function x;
  MyButton(this.x);
  @override
  Widget build(BuildContext context) {
    return Container(
      child: RaisedButton(onPressed: x,child:Text('press me')),
    );
  }
}

Как MyButton может вызывать метод из _TestState, если он существует в другом файле.

1 Ответ

2 голосов
/ 09 июля 2020

Пранав К Кажется, что вы видите вещи по-другому. _TestState может вызывать или использовать MyButton, но не наоборот. Это означает, что ваш код правильный; для проверки вызова _TestState в MyButton и просмотра результата.

...