如何在另一个类中使用扩展State的类的方法- FLUTTER

mznpcxlj  于 2023-08-07  发布在  Flutter
关注(0)|答案(1)|浏览(134)

我能够使用在扩展State的类中创建的方法,因此希望在其他类中使用相同的方法,因为它可以正常工作。
方法:

await tts.setVolume(1);
    await tts.setSpeechRate(0.5);
    await tts.setPitch(1);

    if (app.txt != null) {

      if (app.txt!.isNotEmpty) {

        await tts.speak(app.txt!);

      }

    }

  }

字符串
因为这个类是私有的,所以我不知道该怎么办……
第一个月
你能帮忙吗?
我创建了一个基类的示例:

app.speak();


得到一个bug:方法'speak'没有为类型'App'定义。
如前所述,speak方法属于_AppState的类,尽管它是私有的...

sauutmhj

sauutmhj1#

你可以这样做

class AppState extends StatefulWidget {
  const AppState({super.key});

  @override
  State<AppState> createState() => AppStateState();
}

class AppStateState extends State<AppState> {
  Future<void> speak() async {
    return;
  }

  @override
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}

class AnotherWidget extends StatefulWidget {
  const AnotherWidget({super.key});

  @override
  State<AnotherWidget> createState() => _AnotherWidgetState();
}

class _AnotherWidgetState extends State<AnotherWidget> {
  void anotherMethod(BuildContext context) {
    final ttf = context.findAncestorStateOfType<AppStateState>();
    ttf?.speak();
  }

  @override
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}

字符串
请注意,AnotherWidget是顶层AppState的子级。

void anotherMethod(BuildContext context) {
    final ttf = context.findAncestorStateOfType<AppStateState>();
    ttf?.speak();
  }

相关问题