react-native-navigation的迁移库

platformSpecific.android.js 2.2KB

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