如何在Flutter(DART)中访问其他类的方法?

莫因·侯赛尼(Moein Hosseini)

我在脚手架中使用了颤振贴图,并且在脚手架小部件类中有一个名为“ showMyBottomSheet”的方法。点击地图并打开底部工作表时,用于执行此方法的地图。

但是,既然我已经将这两个文件分开了,则无法从map类访问脚手架有状态窗口小部件中的“ showMyBottomSheet”方法。

我该怎么做?我不应该分开吗?

我的主页-home.dart

class MyHomePage extends StatefulWidget {
  static const String route = '/';

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  static const String route = '/';

  // Bottom sheet
  final _scaffoldKey = new GlobalKey<ScaffoldState>();

  dynamic showMyBottomSheet(LatLng latlang) {
    _scaffoldKey.currentState.showBottomSheet((context) {
      return new CustomBottomSheet();
    });
  }

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      key: _scaffoldKey,
      drawer: buildDrawer(context, route),
      body: new Column(
        children: [
          new CustomMap(),
        ],
      ),
    );
  }
}

地图小工具-flutterMap.dart

class Cuenter code herestomMap extends StatefulWidget {
  @override
  _CustomMapState createState() => new _CustomMapState();
}

class _CustomMapState extends State<CustomMap> {
  var markers = <Marker>[];

  @override
  Widget build(BuildContext context) {
    return new Flexible(
      child: new FlutterMap(
        options: new MapOptions(
            center: new LatLng(51.25, 30.5),
            zoom: 15.0,
            onTap: // I want to call showMyBottomSheet method (from home page) here
        ),
        layers: [
          new TileLayerOptions(
              urlTemplate:
              "https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",
              subdomains: ['a', 'b', 'c']),
        ],
      ),
    );
  }
}
雅敏

首先,请注意,任何以下划线开头的方法在Dart中都将视为私有方法。看这里

在这种情况下,您应该将方法传递给子窗口小部件,然后再调用它。检查这个例子:

class MyHomePage extends StatefulWidget {
  static const String route = '/';

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  static const String route = '/';

  // Bottom sheet
  final _scaffoldKey = new GlobalKey<ScaffoldState>();

  dynamic showMyBottomSheet(LatLng latlang) {
    _scaffoldKey.currentState.showBottomSheet((context) {
      return new CustomBottomSheet();
    });
  }

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      key: _scaffoldKey,
      drawer: buildDrawer(context, route),
      body: new Column(
        children: [
          new CustomMap(onMapTap: showMyBottomSheet),
        ],
      ),
    );
  }
}

在flutterMap.dart中:

class CustomMap extends StatefulWidget {
  Function onMapTap;
  CustomMap({this.onMapTap});

  @override
  _CustomMapState createState() => new _CustomMapState();
}

class _CustomMapState extends State<CustomMap> {
  var markers = <Marker>[];

  @override
  Widget build(BuildContext context) {
    return new Flexible(
      child: new FlutterMap(
        options: new MapOptions(
            center: new LatLng(51.25, 30.5),
            zoom: 15.0,
            onTap: (){
              widget.onMapTap(LatLng(34.12312,56.1323));
            }
        ),
        layers: [
          new TileLayerOptions(
              urlTemplate:
              "https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",
              subdomains: ['a', 'b', 'c']),
        ],
      ),
    );
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 Flutter/dart 中访问其他 Class 方法

如何在Java中的其他类中访问方法的变量?

如何在C ++中的其他类的方法中访问变量

如何在JAVA的同一包中调用方法或访问其他类中的字段

如何在Qt中访问其他类的对象?

角:如何在其他类方法中访问构造函数的私有输入参数?

如何在Python中从其他类调用类方法?

如何访问其他类中的变量

如何在异步方法中使用其他类中的其他函数

如何在flutter(dart)中访问一个类中的方法并在另一个类中调用它

其他类中的 Flutter 共享首选项访问

如何直接从其他类的库类中访问方法?爪哇

如何从其他类访问一个类中的方法

如何在 Swift 中从 AppDelegate 中的其他类访问数组?

Flutter-如何在其他窗口小部件中访问TextEditingController?

Codeigniter:如何在一个类中访问多个其他函数的多个变量?

如何从类的其他方法访问该方法?

如何重用其他类中的方法

从其他类方法访问类方法

如何以可以从 C# 中的其他方法访问的方式存储随机类变量?

使用通用类访问其他类中的其他方法

我如何从其他类访问推荐的方法?

Kotlin-无法访问其他类中的方法

如何在定位小部件中以像素或任何其他单位在 Flutter/Dart 中设置左和上?

如何从Java中的其他类访问变量?

如何访问 Flash Builder 中的其他类

如何使用kivy从def中的其他类访问变量?

TypeScript如何访问其他类中定义的对象

如何访问objective c的其他模块中的swift类