如何通过navArgs将参数传递给详细信息ViewModel

时间:2020-04-07 21:13:58

标签: android kotlin mvvm kodein

我有一个带有RecyclerView播客的屏幕,单击该按钮时,它将带您到该特定播客的详细屏幕。使用Kodein进行ViewModel注入,如何将从列表片段中单击的播客的ID传递到详细信息片段的ViewModel,以便可以从API中获取它?

详细的ViewModel结构如下:

class PodcastDetailViewModel internal constructor(
    private val podcastRepository: PodcastRepository,
    podcastId: String = ""
): ViewModel() {
    // viewmodel stuff
}

详细片段如下:

class PodcastDetailFragment : ScopedFragment(), KodeinAware {
    override val kodein by closestKodein()
    private val args: PodcastDetailFragmentArgs by navArgs()
    private val viewModelFactory: PodcastDetailViewModelFactory by kodein.newInstance { PodcastDetailViewModelFactory(args.podcastId, instance()) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        viewModel = viewModelFactory.create(PodcastDetailViewModel::class.java)
    }

    // other stuff
}

这是我从列表导航到详细信息屏幕的方式:

private fun navigateToPodcastDetailFragment(podcastId: String) {
        val args = Bundle()
        args.putString("podcast_id", podcastId)

        val directions =
            TopPodcastsFragmentDirections.viewPodcastDetails(
                podcastId
            )
        val extras = FragmentNavigatorExtras(
            podcast_image to "podcastImage_$podcastId"
        )

        Navigation.findNavController(requireActivity(), R.id.nav_host_fragment)
            .navigate(directions, extras)
    } 

这是我的绑定方式:

bind() from provider { PodcastDetailViewModelFactory(instance(), instance()) }

我不确定如何在ViewModelFactory构造函数中绑定该字符串参数,或者如何将数据传递到那里,因此我们将不胜感激。

3 个答案:

答案 0 :(得分:2)

您可以使用工厂进行绑定:

bind() from factory { podcastId: String -> 
    PodcastDetailViewModelFactory(podcastId, instance()) 
}

通过以下方式现场调用:

private val viewModelFactory: PodcastDetailViewModelFactory by instance(arg = args.podcastId) 

希望这会有所帮助。

答案 1 :(得分:0)

我通过切换到工厂绑定来解决此问题,就像romainbsl建议的那样,但是片段中的调用有些不同。

绑定变为:

bind() from factory { podcastId: String -> 
    PodcastDetailViewModelFactory(podcastId, instance()) 
}

,现场电话变为:

private val viewModelFactory: PodcastDetailViewModelFactory by instance(arg = args.podcastId)

答案 2 :(得分:0)

试试这个

Unable to load msg [custom_msg_python/SensorInformation]: Cannot locate message [SensorInformation]: unknown package [custom_msg_python] on search path 
[
  {
    "rosconsole":[
      "/opt/ros/melodic/share/rosconsole/msg"
    ],
    "compressed_depth_image_transport":[
      "/opt/ros/melodic/share/compressed_depth_image_transport/msg"
    ],
    "catkin":[
      "/opt/ros/melodic/share/catkin/msg"
    ],
    "rviz_visual_tools":[
      "/opt/ros/melodic/share/rviz_visual_tools/msg"
    ],
    "moveit_planners_chomp":[
      "/opt/ros/melodic/share/moveit_planners_chomp/msg"
    ],
    "urdf":[
      "/opt/ros/melodic/share/urdf/msg"
    ],
    "rosgraph":[
      "/opt/ros/melodic/share/rosgraph/msg"
    ],
    "rqt_py_console":[
      "/opt/ros/melodic/share/rqt_py_console/msg"
    ],
    "nodelet_topic_tools":[
      "/opt/ros/melodic/share/nodelet_topic_tools/msg"
    ],
    "rqt_graph":[
      "/opt/ros/melodic/share/rqt_graph/msg"
    ],
    "nodelet_tutorial_math":[
      "/opt/ros/melodic/share/nodelet_tutorial_math/msg"
    ],
    "qt_gui":[
      "/opt/ros/melodic/share/qt_gui/msg"
    ],
    "filters":[
      "/opt/ros/melodic/share/filters/msg"
    ],
    "ompl":[
      "/opt/ros/melodic/share/ompl/msg"
    ],
    "eigen_conversions":[
      "/opt/ros/melodic/share/eigen_conversions/msg"
    ],
    "moveit_ros_planning_interface":[
      "/opt/ros/melodic/share/moveit_ros_planning_interface/msg"
    ],
    "srdfdom":[
      "/opt/ros/melodic/share/srdfdom/msg"
    ],
    "smclib":[
      "/opt/ros/melodic/share/smclib/msg"
    ],
    "roslib":[
      "/opt/ros/melodic/share/roslib/msg"
    ],
    "geneus":[
      "/opt/ros/melodic/share/geneus/msg"
    ],
    "roscpp_serialization":[
      "/opt/ros/melodic/share/roscpp_serialization/msg"
    ],
    "diagnostic_msgs":[
      "/opt/ros/melodic/share/diagnostic_msgs/msg"
    ],
    "rosbuild":[
      "/opt/ros/melodic/share/rosbuild/msg"
    ],
    "rosclean":[
      "/opt/ros/melodic/share/rosclean/msg"
    ],
    "tf":[
      "/opt/ros/melodic/share/tf/msg"
    ],
    "rqt_publisher":[
      "/opt/ros/melodic/share/rqt_publisher/msg"
    ],
    "roslang":[
      "/opt/ros/melodic/share/roslang/msg"
    ],
    "geometric_shapes":[
      "/opt/ros/melodic/share/geometric_shapes/msg"
    ],
    "smach_ros":[
      "/opt/ros/melodic/share/smach_ros/msg"
    ],
    "rqt_web":[
      "/opt/ros/melodic/share/rqt_web/msg"
    ],
    "shape_msgs":[
      "/opt/ros/melodic/share/shape_msgs/msg"
    ],
    "trajectory_msgs":[
      "/opt/ros/melodic/share/trajectory_msgs/msg"
    ],
    "moveit_kinematics":[
      "/opt/ros/melodic/share/moveit_kinematics/msg"
    ],
    "diagnostic_aggregator":[
      "/opt/ros/melodic/share/diagnostic_aggregator/msg"
    ],
    "image_view":[
      "/opt/ros/melodic/share/image_view/msg"
    ],
    "moveit_msgs":[
      "/opt/ros/melodic/share/moveit_msgs/msg"
    ],
    "visualization_msgs":[
      "/opt/ros/melodic/share/visualization_msgs/msg"
    ],
    "moveit_ros_robot_interaction":[
      "/opt/ros/melodic/share/moveit_ros_robot_interaction/msg"
    ],
    "resource_retriever":[
      "/opt/ros/melodic/share/resource_retriever/msg"
    ],
    "rqt_topic":[
      "/opt/ros/melodic/share/rqt_topic/msg"
    ],
    "laser_filters":[
      "/opt/ros/melodic/share/laser_filters/msg"
    ],
    "moveit_resources_panda_moveit_config":[
      "/opt/ros/melodic/share/moveit_resources_panda_moveit_config/msg"
    ],
    "rqt_action":[
      "/opt/ros/melodic/share/rqt_action/msg"
    ],
    "control_toolbox":[
      "/opt/ros/melodic/share/control_toolbox/msg"
    ],
    "rqt_top":[
      "/opt/ros/melodic/share/rqt_top/msg"
    ],
    "rqt_rviz":[
      "/opt/ros/melodic/share/rqt_rviz/msg"
    ],
    "kdl_parser_py":[
      "/opt/ros/melodic/share/kdl_parser_py/msg"
    ],
    "rosgraph_msgs":[
      "/opt/ros/melodic/share/rosgraph_msgs/msg"
    ],
    "moveit_ros_planning":[
      "/opt/ros/melodic/share/moveit_ros_planning/msg"
    ],
    "rosboost_cfg":[
      "/opt/ros/melodic/share/rosboost_cfg/msg"
    ],
    "genmsg":[
      "/opt/ros/melodic/share/genmsg/msg"
    ],
    "xacro":[
      "/opt/ros/melodic/share/xacro/msg"
    ],
    "turtle_tf2":[
      "/opt/ros/melodic/share/turtle_tf2/msg"
    ],
    "rqt_robot_dashboard":[
      "/opt/ros/melodic/share/rqt_robot_dashboard/msg"
    ],
    "pluginlib":[
      "/opt/ros/melodic/share/pluginlib/msg"
    ],
    "rqt_msg":[
      "/opt/ros/melodic/share/rqt_msg/msg"
    ],
    "gazebo_dev":[
      "/opt/ros/melodic/share/gazebo_dev/msg"
    ],
    "gl_dependency":[
      "/opt/ros/melodic/share/gl_dependency/msg"
    ],
    "rqt_service_caller":[
      "/opt/ros/melodic/share/rqt_service_caller/msg"
    ],
    "rqt_gui_py":[
      "/opt/ros/melodic/share/rqt_gui_py/msg"
    ],
    "xmlrpcpp":[
      "/opt/ros/melodic/share/xmlrpcpp/msg"
    ],
    "rosmaster":[
      "/opt/ros/melodic/share/rosmaster/msg"
    ],
    "qt_dotgraph":[
      "/opt/ros/melodic/share/qt_dotgraph/msg"
    ],
    "warehouse_ros":[
      "/opt/ros/melodic/share/warehouse_ros/msg"
    ],
    "rosnode":[
      "/opt/ros/melodic/share/rosnode/msg"
    ],
    "rqt_pose_view":[
      "/opt/ros/melodic/share/rqt_pose_view/msg"
    ],
    "bond":[
      "/opt/ros/melodic/share/bond/msg"
    ],
    "self_test":[
      "/opt/ros/melodic/share/self_test/msg"
    ],
    "laser_assembler":[
      "/opt/ros/melodic/share/laser_assembler/msg"
    ],
    "rospack":[
      "/opt/ros/melodic/share/rospack/msg"
    ],
    "transmission_interface":[
      "/opt/ros/melodic/share/transmission_interface/msg"
    ],
    "image_rotate":[
      "/opt/ros/melodic/share/image_rotate/msg"
    ],
    "chomp_motion_planner":[
      "/opt/ros/melodic/share/chomp_motion_planner/msg"
    ],
    "rqt_image_view":[
      "/opt/ros/melodic/share/rqt_image_view/msg"
    ],
    "roslisp":[
      "/opt/ros/melodic/share/roslisp/msg"
    ],
    "rqt_console":[
      "/opt/ros/melodic/share/rqt_console/msg"
    ],
    "mk":[
      "/opt/ros/melodic/share/mk/msg"
    ],
    "rviz_plugin_tutorials":[
      "/opt/ros/melodic/share/rviz_plugin_tutorials/msg"
    ],
    "tf2_msgs":[
      "/opt/ros/melodic/share/tf2_msgs/msg"
    ],
    "python_qt_binding":[
      "/opt/ros/melodic/share/python_qt_binding/msg"
    ],
    "laser_geometry":[
      "/opt/ros/melodic/share/laser_geometry/msg"
    ],
    "rviz":[
      "/opt/ros/melodic/share/rviz/msg"
    ],
    "gencpp":[
      "/opt/ros/melodic/share/gencpp/msg"
    ],
    "rqt_gui_cpp":[
      "/opt/ros/melodic/share/rqt_gui_cpp/msg"
    ],
    "rqt_bag":[
      "/opt/ros/melodic/share/rqt_bag/msg"
    ],
    "rqt_gui":[
      "/opt/ros/melodic/share/rqt_gui/msg"
    ],
    "qt_gui_py_common":[
      "/opt/ros/melodic/share/qt_gui_py_common/msg"
    ],
    "graph_msgs":[
      "/opt/ros/melodic/share/graph_msgs/msg"
    ],
    "roscpp_traits":[
      "/opt/ros/melodic/share/roscpp_traits/msg"
    ],
    "rosout":[
      "/opt/ros/melodic/share/rosout/msg"
    ],
    "diagnostic_common_diagnostics":[
      "/opt/ros/melodic/share/diagnostic_common_diagnostics/msg"
    ],
    "rostopic":[
      "/opt/ros/melodic/share/rostopic/msg"
    ],
    "smach_msgs":[
      "/opt/ros/melodic/share/smach_msgs/msg"
    ],
    "message_generation":[
      "/opt/ros/melodic/share/message_generation/msg"
    ],
    "moveit_tutorials":[
      "/home/sanket/ws_moveit/src/moveit_tutorials/msg",
      "/home/sanket/ws_moveit/devel/share/moveit_tutorials/msg"
    ],
    "camera_calibration":[
      "/opt/ros/melodic/share/camera_calibration/msg"
    ],
    "ros_environment":[
      "/opt/ros/melodic/share/ros_environment/msg"
    ],
    "qwt_dependency":[
      "/opt/ros/melodic/share/qwt_dependency/msg"
    ],
    "polled_camera":[
      "/opt/ros/melodic/share/polled_camera/msg"
    ],
    "joy":[
      "/opt/ros/melodic/share/joy/msg"
    ],
    "rostime":[
      "/opt/ros/melodic/share/rostime/msg"
    ],
    "urdf_tutorial":[
      "/opt/ros/melodic/share/urdf_tutorial/msg"
    ],
    "kdl_conversions":[
      "/opt/ros/melodic/share/kdl_conversions/msg"
    ],
    "rqt_nav_view":[
      "/opt/ros/melodic/share/rqt_nav_view/msg"
    ],
    "roslint":[
      "/opt/ros/melodic/share/roslint/msg"
    ],
    "rosservice":[
      "/opt/ros/melodic/share/rosservice/msg"
    ],
    "moveit_ros_manipulation":[
      "/opt/ros/melodic/share/moveit_ros_manipulation/msg"
    ],
    "rosunit":[
      "/opt/ros/melodic/share/rosunit/msg"
    ],
    "turtle_tf":[
      "/opt/ros/melodic/share/turtle_tf/msg"
    ],
    "roscpp_tutorials":[
      "/opt/ros/melodic/share/roscpp_tutorials/msg"
    ],
    "turtle_actionlib":[
      "/opt/ros/melodic/share/turtle_actionlib/msg"
    ],
    "python_orocos_kdl":[
      "/opt/ros/melodic/share/python_orocos_kdl/msg"
    ],
    "stage":[
      "/opt/ros/melodic/share/stage/msg"
    ],
    "moveit_core":[
      "/opt/ros/melodic/share/moveit_core/msg"
    ],
    "visualization_marker_tutorials":[
      "/opt/ros/melodic/share/visualization_marker_tutorials/msg"
    ],
    "bondcpp":[
      "/opt/ros/melodic/share/bondcpp/msg"
    ],
    "rosconsole_bridge":[
      "/opt/ros/melodic/share/rosconsole_bridge/msg"
    ],
    "pluginlib_tutorials":[
      "/opt/ros/melodic/share/pluginlib_tutorials/msg"
    ],
    "forward_command_controller":[
      "/opt/ros/melodic/share/forward_command_controller/msg"
    ],
    "camera_info_manager":[
      "/opt/ros/melodic/share/camera_info_manager/msg"
    ],
    "camera_calibration_parsers":[
      "/opt/ros/melodic/share/camera_calibration_parsers/msg"
    ],
    "roslz4":[
      "/opt/ros/melodic/share/roslz4/msg"
    ],
    "rqt_dep":[
      "/opt/ros/melodic/share/rqt_dep/msg"
    ],
    "moveit_resources_panda_description":[
      "/opt/ros/melodic/share/moveit_resources_panda_description/msg"
    ],
    "rosmsg":[
      "/opt/ros/melodic/share/rosmsg/msg"
    ],
    "moveit_simple_controller_manager":[
      "/opt/ros/melodic/share/moveit_simple_controller_manager/msg"
    ],
    "turtlesim":[
      "/opt/ros/melodic/share/turtlesim/msg"
    ],
    "rqt_robot_monitor":[
      "/opt/ros/melodic/share/rqt_robot_monitor/msg"
    ],
    "rosparam":[
      "/opt/ros/melodic/share/rosparam/msg"
    ],
    "controller_interface":[
      "/opt/ros/melodic/share/controller_interface/msg"
    ],
    "diagnostic_analysis":[
      "/opt/ros/melodic/share/diagnostic_analysis/msg"
    ],
    "stereo_msgs":[
      "/opt/ros/melodic/share/stereo_msgs/msg"
    ],
    "pcl_msgs":[
      "/opt/ros/melodic/share/pcl_msgs/msg"
    ],
    "interactive_markers":[
      "/opt/ros/melodic/share/interactive_markers/msg"
    ],
    "object_recognition_msgs":[
      "/opt/ros/melodic/share/object_recognition_msgs/msg"
    ],
    "diagnostic_updater":[
      "/opt/ros/melodic/share/diagnostic_updater/msg"
    ],
    "pybind11_catkin":[
      "/opt/ros/melodic/share/pybind11_catkin/msg"
    ],
    "panda_moveit_config":[
      "/home/sanket/ws_moveit/src/panda_moveit_config/msg",
      "/home/sanket/ws_moveit/devel/share/panda_moveit_config/msg"
    ],
    "pcl_conversions":[
      "/opt/ros/melodic/share/pcl_conversions/msg"
    ],
    "rviz_python_tutorial":[
      "/opt/ros/melodic/share/rviz_python_tutorial/msg"
    ],
    "tf2":[
      "/opt/ros/melodic/share/tf2/msg"
    ],
    "rqt_runtime_monitor":[
      "/opt/ros/melodic/share/rqt_runtime_monitor/msg"
    ],
    "urdf_sim_tutorial":[
      "/opt/ros/melodic/share/urdf_sim_tutorial/msg"
    ],
    "position_controllers":[
      "/opt/ros/melodic/share/position_controllers/msg"
    ],
    "rospy":[
      "/opt/ros/melodic/share/rospy/msg"
    ],
    "rosbash":[
      "/opt/ros/melodic/share/rosbash/msg"
    ],
    "rqt_reconfigure":[
      "/opt/ros/melodic/share/rqt_reconfigure/msg"
    ],
    "rqt_bag_plugins":[
      "/opt/ros/melodic/share/rqt_bag_plugins/msg"
    ],
    "image_publisher":[
      "/opt/ros/melodic/share/image_publisher/msg"
    ],
    "eigenpy":[
      "/opt/ros/melodic/share/eigenpy/msg"
    ],
    "rqt_plot":[
      "/opt/ros/melodic/share/rqt_plot/msg"
    ],
    "topic_tools":[
      "/opt/ros/melodic/share/topic_tools/msg"
    ],
    "rostest":[
      "/opt/ros/melodic/share/rostest/msg"
    ],
    "control_msgs":[
      "/opt/ros/melodic/share/control_msgs/msg"
    ],
    "tf_conversions":[
      "/opt/ros/melodic/share/tf_conversions/msg"
    ],
    "interactive_marker_tutorials":[
      "/opt/ros/melodic/share/interactive_marker_tutorials/msg"
    ],
    "cpp_common":[
      "/opt/ros/melodic/share/cpp_common/msg"
    ],
    "nodelet":[
      "/opt/ros/melodic/share/nodelet/msg"
    ],
    "actionlib_msgs":[
      "/opt/ros/melodic/share/actionlib_msgs/msg"
    ],
    "stage_ros":[
      "/opt/ros/melodic/share/stage_ros/msg"
    ],
    "rqt_robot_steering":[
      "/opt/ros/melodic/share/rqt_robot_steering/msg"
    ],
    "dynamic_reconfigure":[
      "/opt/ros/melodic/share/dynamic_reconfigure/msg"
    ],
    "genpy":[
      "/opt/ros/melodic/share/genpy/msg"
    ],
    "actionlib_tutorials":[
      "/opt/ros/melodic/share/actionlib_tutorials/msg"
    ],
    "tf2_geometry_msgs":[
      "/opt/ros/melodic/share/tf2_geometry_msgs/msg"
    ],
    "compressed_image_transport":[
      "/opt/ros/melodic/share/compressed_image_transport/msg"
    ],
    "controller_manager_msgs":[
      "/opt/ros/melodic/share/controller_manager_msgs/msg"
    ],
    "rqt_shell":[
      "/opt/ros/melodic/share/rqt_shell/msg"
    ],
    "std_msgs":[
      "/opt/ros/melodic/share/std_msgs/msg"
    ],
    "realtime_tools":[
      "/opt/ros/melodic/share/realtime_tools/msg"
    ],
    "moveit_ros_move_group":[
      "/opt/ros/melodic/share/moveit_ros_move_group/msg"
    ],
    "rqt_launch":[
      "/opt/ros/melodic/share/rqt_launch/msg"
    ],
    "angles":[
      "/opt/ros/melodic/share/angles/msg"
    ],
    "joint_state_controller":[
      "/opt/ros/melodic/share/joint_state_controller/msg"
    ],
    "webkit_dependency":[
      "/opt/ros/melodic/share/webkit_dependency/msg"
    ],
    "cv_bridge":[
      "/opt/ros/melodic/share/cv_bridge/msg"
    ],
    "gazebo_ros":[
      "/opt/ros/melodic/share/gazebo_ros/msg"
    ],
    "rosbag_storage":[
      "/opt/ros/melodic/share/rosbag_storage/msg"
    ],
    "roswtf":[
      "/opt/ros/melodic/share/roswtf/msg"
    ],
    "std_srvs":[
      "/opt/ros/melodic/share/std_srvs/msg"
    ],
    "joint_state_publisher_gui":[
      "/opt/ros/melodic/share/joint_state_publisher_gui/msg"
    ],
    "moveit_ros_warehouse":[
      "/opt/ros/melodic/share/moveit_ros_warehouse/msg"
    ],
    "joint_state_publisher":[
      "/opt/ros/melodic/share/joint_state_publisher/msg"
    ],
    "octomap":[
      "/opt/ros/melodic/share/octomap/msg"
    ],
    "stereo_image_proc":[
      "/opt/ros/melodic/share/stereo_image_proc/msg"
    ],
    "bondpy":[
      "/opt/ros/melodic/share/bondpy/msg"
    ],
    "moveit_ros_benchmarks":[
      "/opt/ros/melodic/share/moveit_ros_benchmarks/msg"
    ],
    "tf2_kdl":[
      "/opt/ros/melodic/share/tf2_kdl/msg"
    ],
    "smach":[
      "/opt/ros/melodic/share/smach/msg"
    ],
    "genlisp":[
      "/opt/ros/melodic/share/genlisp/msg"
    ],
    "class_loader":[
      "/opt/ros/melodic/share/class_loader/msg"
    ],
    "message_filters":[
      "/opt/ros/melodic/share/message_filters/msg"
    ],
    "tf2_py":[
      "/opt/ros/melodic/share/tf2_py/msg"
    ],
    "hardware_interface":[
      "/opt/ros/melodic/share/hardware_interface/msg"
    ],
    "cmake_modules":[
      "/opt/ros/melodic/share/cmake_modules/msg"
    ],
    "moveit_ros_visualization":[
      "/opt/ros/melodic/share/moveit_ros_visualization/msg"
    ],
    "pcl_ros":[
      "/opt/ros/melodic/share/pcl_ros/msg"
    ],
    "nav_msgs":[
      "/opt/ros/melodic/share/nav_msgs/msg"
    ],
    "rosmake":[
      "/opt/ros/melodic/share/rosmake/msg"
    ],
    "image_proc":[
      "/opt/ros/melodic/share/image_proc/msg"
    ],
    "roscpp":[
      "/opt/ros/melodic/share/roscpp/msg"
    ],
    "rqt_moveit":[
      "/opt/ros/melodic/share/rqt_moveit/msg"
    ],
    "theora_image_transport":[
      "/opt/ros/melodic/share/theora_image_transport/msg"
    ],
    "rqt_py_common":[
      "/opt/ros/melodic/share/rqt_py_common/msg"
    ],
    "depth_image_proc":[
      "/opt/ros/melodic/share/depth_image_proc/msg"
    ],
    "actionlib":[
      "/opt/ros/melodic/share/actionlib/msg"
    ],
    "moveit_ros_occupancy_map_monitor":[
      "/opt/ros/melodic/share/moveit_ros_occupancy_map_monitor/msg"
    ],
    "franka_description":[
      "/opt/ros/melodic/share/franka_description/msg"
    ],
    "octomap_msgs":[
      "/opt/ros/melodic/share/octomap_msgs/msg"
    ],
    "qt_gui_cpp":[
      "/opt/ros/melodic/share/qt_gui_cpp/msg"
    ],
    "eigen_stl_containers":[
      "/opt/ros/melodic/share/eigen_stl_containers/msg"
    ],
    "tf2_ros":[
      "/opt/ros/melodic/share/tf2_ros/msg"
    ],
    "librviz_tutorial":[
      "/opt/ros/melodic/share/librviz_tutorial/msg"
    ],
    "robot_state_publisher":[
      "/opt/ros/melodic/share/robot_state_publisher/msg"
    ],
    "image_geometry":[
      "/opt/ros/melodic/share/image_geometry/msg"
    ],
    "moveit_fake_controller_manager":[
      "/opt/ros/melodic/share/moveit_fake_controller_manager/msg"
    ],
    "message_runtime":[
      "/opt/ros/melodic/share/message_runtime/msg"
    ],
    "image_transport":[
      "/opt/ros/melodic/share/image_transport/msg"
    ],
    "diff_drive_controller":[
      "/opt/ros/melodic/share/diff_drive_controller/msg"
    ],
    "moveit_commander":[
      "/opt/ros/melodic/share/moveit_commander/msg"
    ],
    "gazebo_msgs":[
      "/opt/ros/melodic/share/gazebo_msgs/msg"
    ],
    "moveit_visual_tools":[
      "/opt/ros/melodic/share/moveit_visual_tools/msg"
    ],
    "roscreate":[
      "/opt/ros/melodic/share/roscreate/msg"
    ],
    "moveit_planners_ompl":[
      "/opt/ros/melodic/share/moveit_planners_ompl/msg"
    ],
    "rospy_tutorials":[
      "/opt/ros/melodic/share/rospy_tutorials/msg"
    ],
    "moveit_ros_control_interface":[
      "/opt/ros/melodic/share/moveit_ros_control_interface/msg"
    ],
    "random_numbers":[
      "/opt/ros/melodic/share/random_numbers/msg"
    ],
    "gazebo_plugins":[
      "/opt/ros/melodic/share/gazebo_plugins/msg"
    ],
    "rqt_srv":[
      "/opt/ros/melodic/share/rqt_srv/msg"
    ],
    "urdfdom_py":[
      "/opt/ros/melodic/share/urdfdom_py/msg"
    ],
    "map_msgs":[
      "/opt/ros/melodic/share/map_msgs/msg"
    ],
    "moveit_setup_assistant":[
      "/opt/ros/melodic/share/moveit_setup_assistant/msg"
    ],
    "roslaunch":[
      "/opt/ros/melodic/share/roslaunch/msg"
    ],
    "tf2_eigen":[
      "/opt/ros/melodic/share/tf2_eigen/msg"
    ],
    "rqt_tf_tree":[
      "/opt/ros/melodic/share/rqt_tf_tree/msg"
    ],
    "gazebo_ros_control":[
      "/opt/ros/melodic/share/gazebo_ros_control/msg"
    ],
    "moveit_ros_perception":[
      "/opt/ros/melodic/share/moveit_ros_perception/msg"
    ],
    "controller_manager":[
      "/opt/ros/melodic/share/controller_manager/msg"
    ],
    "rqt_logger_level":[
      "/opt/ros/melodic/share/rqt_logger_level/msg"
    ],
    "kdl_parser":[
      "/opt/ros/melodic/share/kdl_parser/msg"
    ],
    "gennodejs":[
      "/opt/ros/melodic/share/gennodejs/msg"
    ],
    "media_export":[
      "/opt/ros/melodic/share/media_export/msg"
    ],
    "geometry_msgs":[
      "/opt/ros/melodic/share/geometry_msgs/msg"
    ],
    "urdf_parser_plugin":[
      "/opt/ros/melodic/share/urdf_parser_plugin/msg"
    ],
    "joint_limits_interface":[
      "/opt/ros/melodic/share/joint_limits_interface/msg"
    ],
    "sensor_msgs":[
      "/opt/ros/melodic/share/sensor_msgs/msg"
    ],
    "orocos_kdl":[
      "/opt/ros/melodic/share/orocos_kdl/msg"
    ],
    "rosbag":[
      "/opt/ros/melodic/share/rosbag/msg"
    ],
    "rosbag_migration_rule":[
      "/opt/ros/melodic/share/rosbag_migration_rule/msg"
    ]
  }
]

private val viewModel by viewModels<PodcastDetailViewModel> {
  val viewModelFactory: PodcastDetailViewModelFactory by instance(arg = args.podcastId)
  viewModelFactory
}