HarmonyOS 数组bleList,第一次更新页面正常显示,后面再次更新页面不刷新,只显示第一次的数据
页面创建时扫描蓝牙,只有第一个能显示,后面的都不显示了。
import { ble, socket } from '@kit.ConnectivityKit';
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
import BluetoothSocket from '../../common/bluetooth/BluetoothSocket';
import BluetoothUtil from '../../common/bluetooth/BluetoothUtil';
import BleScanManager from '../../common/bluetooth/BleScanManager';
import { abilityAccessCtrl, PermissionRequestResult } from '@kit.AbilityKit';
import { Datas } from '../../common/utils/Datas';
import Logger from '../../common/utils/Logger';
import { JSON } from '@kit.ArkTS';
/**
 * 附近设备
 */
@Component
export  struct VicinityLock{
  atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
  @State bleList:Array<ble.ScanResult> = []
  bleNameArray:Array<string> = [];
  build() {
    //附近设备
    Column(){
      Row(){
        Text()
          .width(5)
          .height(15)
          .backgroundColor(Color.Green)
          .borderRadius(2)
          .margin({right:5})
        Text('附近设备')
      }.width('100%')
      Column(){
        this.LockList()
      }
    }.width('90%')
  }
  @Builder LockList(){
    ForEach(this.bleList,(lock:ble.ScanResult) => {
      Row(){
        Image($r('app.media.hlzn_launcher'))
          .width(70)
          .height(70)
          .margin({left:5})
        Column({space:7}){
          Row({space:95}){
            Text(lock.deviceName)
            Text($r('app.string.lock_on_line'))
              .fontColor(Color.Green)
          }
          .width('100%')
          .justifyContent(FlexAlign.Start)
        }
        .height(70)
        .margin({left:20})
      }
      .borderColor(Color.White)
      .backgroundColor(Color.White)
      .width('100%')
      .height(80)
      .margin({bottom:5})
      .borderRadius(5)
    }, (lock:ble.ScanResult,index:number) => index.toString())
  }
  aboutToAppear(): void {
    try {
      let context = getContext(this);
      this.atManager.requestPermissionsFromUser(context, ['ohos.permission.ACCESS_BLUETOOTH'], (err: BusinessError, data: PermissionRequestResult)=>{
        console.info(`data: `+ JSON.stringify(data));
        console.info(`data permissions:` + data.permissions);
        console.info(`data authResults:` + data.authResults);
        //开启扫描
        BleScanManager.startScan();
        //监听扫描结果
        BleScanManager.onScanResult((bleResult:ble.ScanResult) => {
          if(this.bleNameArray.indexOf(bleResult.deviceName) == -1){
            this.bleList.push(bleResult);
          }
          this.bleNameArray.push(bleResult.deviceName)
          Logger.p('bleResult===='+bleResult.deviceName)
          Logger.p('bleResult===='+this.bleList.length)
        });
      });
    } catch(err) {
      console.log(`${JSON.stringify(err)}`);
    }
  }
}
@Extend(Text) function normal(){
  .fontColor($r('app.color.text_color'))
  .fontSize($r('app.float.normal_text_size'))
}
@Extend(Text) function small(){
  .fontSize($r('app.float.small_text_size'))
  .fontColor($r('app.color.text_color'))
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 HarmonyOS App第一次启动,需要弹出授权隐私页面吗? 
1798浏览  • 1回复 待解决
HarmonyOS 自定义弹窗组件,builder 函数将组件作为值,传进去,第一次显示,@prop 数据不更新 
891浏览  • 1回复 待解决
如何更新页面列表数据 
8297浏览  • 1回复 待解决
HarmonyOS  应用亮度获取第一次值错误,为-1 
1119浏览  • 1回复 待解决
如何判断APP是否是第一次请求权限? 
1543浏览  • 1回复 待解决
greenplum 表第一次insert很慢有什么办法解决? 
5734浏览  • 1回复 待解决
HarmonyOS 每次到当前页面都执行的方法,aboutToAppear只第一次调用 
1188浏览  • 1回复 待解决
HarmonyOS TextInput焦点在弹窗第一次打开时不起作用 
1335浏览  • 1回复 待解决
怎么在进度条更新的时候刷新页面? 
5926浏览  • 1回复 待解决
HarmonyOS 第一次登录会卡输入法,会把app挤占到上方 
905浏览  • 1回复 待解决
HarmonyOS 数据改变未刷新页面 
1624浏览  • 1回复 待解决
离线包 ,第一次不走缓存,第二次访问的时候怎么走webview的缓存? 
1307浏览  • 1回复 待解决
Marquee组件的文字滚动,第一次滚动出现大量空白,如何避免空白出现 
1528浏览  • 1回复 待解决
HarmonyOS 如何刷新页面内容 
932浏览  • 1回复 待解决
如何控制web组件的pagestart和pageend仅在第一次加载url的时候触发 
1307浏览  • 1回复 待解决
第一次使用HUAWEI DevEco Device Tool,提示Windows找不到文件'javaw',救救孩子 
10398浏览  • 2回复 待解决
HarmonyOS openCustomDialog 进入新页面后dialog出现在新页面 
1079浏览  • 1回复 待解决
NAPI层可以获取到第一次安装时间和相应app的进程吗? 
1593浏览  • 1回复 待解决
HarmonyOS 关于foreach循环更新页面数据时页面会闪烁问题 
953浏览  • 1回复 待解决
HarmonyOS 上架失败,第一次上架beta版应用,提交审核立刻失败了 
2908浏览  • 1回复 待解决
HarmonyOS RSA分段加密数据数据 第一次执行加密操作出现报错401,之后执行加密方法却又都正常了 
774浏览  • 1回复 待解决
HarmonyOS router跳转新页面之后使用function作为参数,想在新页面进行回调但是传参到新页面丢失 
955浏览  • 1回复 待解决
HarmonyOS GIF动态图片,怎么设置只显示一次 
2070浏览  • 1回复 待解决
HarmonyOS web里的userAgent,第一次进页面是能正常获取到,第二次进页面就获取不到了, webview.once('webInited'不往里面执行了 
1289浏览  • 1回复 待解决
HarmonyOS router.back()上一层页面怎么触发@State标识的数据刷新页面 
1484浏览  • 1回复 待解决





















可以尝试一下这样的foreach写法,示例如下: