react-native-navigation的迁移库

platformSpecific.android.js 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import Navigation from './Navigation';
  2. import utils from './utils';
  3. import {
  4. RctActivity
  5. } from 'react-native-navigation';
  6. var resolveAssetSource = require('resolveAssetSource');
  7. function startSingleScreenApp(params) {
  8. let screen = params.screen;
  9. if (!screen.screen) {
  10. console.error('startSingleScreenApp(params): screen must include a screen property');
  11. return;
  12. }
  13. addNavigatorParams(screen);
  14. addNavigatorButtons(screen);
  15. RctActivity.startSingleScreenApp(screen);
  16. }
  17. function startTabBasedApp(params) {
  18. if (!params.tabs) {
  19. console.error('startTabBasedApp(params): params.tabs is required');
  20. return;
  21. }
  22. params.tabs.forEach(function (tab, idx) {
  23. addNavigatorParams(tab, null, idx)
  24. addNavigatorButtons(tab);
  25. });
  26. RctActivity.startTabBasedApp(params.tabs);
  27. }
  28. function navigatorPush(navigator, params) {
  29. addNavigatorParams(params, navigator)
  30. addNavigatorButtons(params);
  31. RctActivity.navigatorPush(params);
  32. }
  33. function addNavigatorParams(screen, navigator = null, idx = '') {
  34. screen.navigatorID = navigator ? navigator.navigatorID : utils.getRandomId() + '_nav' + idx;
  35. screen.screenInstanceID = utils.getRandomId();
  36. screen.navigatorEventID = navigator ? navigator.navigatorEventID : screen.screenInstanceID + '_events';
  37. }
  38. function addNavigatorButtons(screen) {
  39. const Screen = Navigation.getRegisteredScreen(screen.screen);
  40. Object.assign(screen, Screen.navigatorButtons);
  41. // Get image uri from image id
  42. if (screen.rightButtons) {
  43. screen.rightButtons.forEach(function(button) {
  44. if (button.icon) {
  45. const icon = resolveAssetSource(button.icon);
  46. if (icon) {
  47. button.icon = icon.uri;
  48. }
  49. console.log('final icon: ' + button.icon);
  50. }
  51. });
  52. }
  53. }
  54. export default {
  55. startSingleScreenApp,
  56. startTabBasedApp,
  57. navigatorPush
  58. }