mh-two-thousand-and-two
2024-04-12 3d2ec2fd0578d3ba0a414b0cc4e4a2ae60878596
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import {
  invoke
} from '../../bridge'
 
import {
  showPage
} from '../../../helpers/page.js'
 
import { getLocale } from 'uni-core/helpers/i18n'
 
function getStatusBarStyle () {
  let style = plus.navigator.getStatusBarStyle()
  if (style === 'UIStatusBarStyleBlackTranslucent' || style === 'UIStatusBarStyleBlackOpaque' || style === 'null') {
    style = 'light'
  } else if (style === 'UIStatusBarStyleDefault') {
    style = 'dark'
  }
  return style
}
 
export function chooseLocation (options, callbackId) {
  const statusBarStyle = getStatusBarStyle()
  const isDark = statusBarStyle !== 'light'
 
  let result
  const page = showPage({
    url: '__uniappchooselocation',
    data: Object.assign({}, options, {
      locale: getLocale()
    }),
    style: {
      animationType: options.animationType || 'slide-in-bottom',
      titleNView: false,
      popGesture: 'close',
      scrollIndicator: 'none'
    },
    onMessage ({
      event,
      detail
    }) {
      if (event === 'selected') {
        result = detail
        result.errMsg = 'chooseLocation:ok'
      }
    },
    onClose () {
      if (isDark) {
        plus.navigator.setStatusBarStyle('dark')
      }
 
      invoke(callbackId, result || {
        errMsg: 'chooseLocation:fail cancel'
      })
    }
  })
 
  if (isDark) {
    plus.navigator.setStatusBarStyle('light')
    page.webview.addEventListener('popGesture', ({
      type,
      result
    }) => {
      if (type === 'start') {
        plus.navigator.setStatusBarStyle('dark')
      } else if (type === 'end' && !result) {
        plus.navigator.setStatusBarStyle('light')
      }
    })
  }
}