首页 > 解决方案 > 颤振指南针示例

问题描述

我希望每个人都做得很好。我正在使用颤振(作为初学者),我想创建一个简单的指南针应用程序。我安装了flutter_compass并使用包提供的示例对其进行了测试,但它卡在了无限加载中。有没有办法解决这个问题?

注意:我注意到代码卡在connectState == wating.

完整代码

示例链接

  Widget _buildCompass() {
    return StreamBuilder<CompassEvent>(
      stream: FlutterCompass.events,
      builder: (context, snapshot) {
        if (snapshot.hasError) {
          return Text('Error reading heading: ${snapshot.error}');
        }

        if (snapshot.connectionState == ConnectionState.waiting) {
          return Center(
            child: CircularProgressIndicator(),
          );
        }

        double? direction = snapshot.data!.heading;

        // if direction is null, then device does not support this sensor
        // show error message
        if (direction == null)
          return Center(
            child: Text("Device does not have sensors !"),
          );

        return Material(
          shape: CircleBorder(),
          clipBehavior: Clip.antiAlias,
          elevation: 4.0,
          child: Container(
            padding: EdgeInsets.all(16.0),
            alignment: Alignment.center,
            decoration: BoxDecoration(
              shape: BoxShape.circle,
            ),
            child: Transform.rotate(
              angle: (direction * (math.pi / 180) * -1),
              child: Image.asset('assets/compass.jpg'),
            ),
          ),
        );
      },
    );
  }

标签: flutterdartlocationcompassdirection

解决方案


我刚刚了解到你不能在 IOS 模拟器上使用颤振罗盘包,因为它没有包正常工作所需的传感器,这就是它卡在无限加载屏幕上的原因(connectState == 等待),所以你只是必须在真正的 Iphone 设备中对其进行测试,它才能正常工作。


推荐阅读